unshare tactic and unit test
continuous-integration/drone/push Build is passing Details

shareTactic
Vivien DUFOUR 1 year ago
parent f1b4f53cd4
commit bd26d85d34

@ -63,6 +63,25 @@ public class UsersController(IUserService users, ITeamService teams, ITacticServ
return result ? Ok() : NotFound();
}
[HttpDelete("/tactics/shared/{tacticId:int}/user/{userId:int}")]
[Authorize]
public async Task<IActionResult> UnshareTactic(int tacticId, int userId)
{
var currentUserId = accessor.CurrentUserId(HttpContext);
var tactic = await tactics.GetTactic(tacticId);
if (tactic == null)
{
return NotFound();
}
if (currentUserId != tactic.OwnerId)
{
return Unauthorized();
}
var success = await tactics.UnshareTactic(tacticId, userId, null);
return success ? Ok() : NotFound();
}
[HttpGet("/tactics/shared/user/{userId:int}")]
[Authorize]

@ -168,8 +168,17 @@ public class DbTacticService(AppContext.AppContext context) : ITacticService
public async Task<bool> UnshareTactic(int tacticId, int? userId, int? teamId)
{
var sharedTactic = await context.SharedTactics
.FirstOrDefaultAsync(st => st.TacticId == tacticId && st.SharedWithUserId == userId && st.SharedWithTeamId == teamId);
SharedTacticEntity? sharedTactic = null;
if (userId.HasValue)
{
sharedTactic = await context.SharedTactics
.FirstOrDefaultAsync(st => st.TacticId == tacticId && st.SharedWithUserId == userId);
}
else if (teamId.HasValue)
{
sharedTactic = await context.SharedTactics
.FirstOrDefaultAsync(st => st.TacticId == tacticId && st.SharedWithTeamId == teamId);
}
if (sharedTactic == null)
{

@ -56,5 +56,13 @@ public class StubAppContext(DbContextOptions<AppContext> options) : AppContext(o
TacticId = 1,
ParentId = null
});
builder.Entity<SharedTacticEntity>()
.HasData(new SharedTacticEntity
{
Id = 1,
TacticId = 1,
SharedWithUserId = 2
});
}
}

@ -7,6 +7,7 @@ using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Model;
using StubContext;
using Xunit.Abstractions;
namespace UnitTests;
@ -56,4 +57,29 @@ public class UsersControllerTest
var result = await controller.ShareTactic(new UsersController.ShareTacticToUserRequest(1, 2));
result.Should().BeOfType<OkResult>();
}
[Fact]
public async Task GetSharedTacticsToUserTest()
{
var controller = GetUserController(2);
var result = await controller.GetSharedTacticsToUser(2);
var okResult = result as OkObjectResult;
var sharedTactics = okResult.Value as IEnumerable<Tactic>;
sharedTactics.Should().NotBeNull();
sharedTactics.Should().ContainSingle();
var tactic = sharedTactics.First();
tactic.Id.Should().Be(1);
}
[Fact]
public async Task UnshareTacticTest()
{
var controller = GetUserController(1);
var result = await controller.UnshareTactic(1, 2);
result.Should().BeOfType<OkResult>();
}
}
Loading…
Cancel
Save