public async Task CreateCrisis_RequestOk_ReturnViewModel() { using var context = new AppDbContext(DbHelper.GetDbContextOptions()); context.Teams.Add(new Team(name: "Team 1", description: "Description 1")); context.Teams.Add(new Team(name: "Team 2", description: "Description 2")); context.SaveChanges(); var request = new CreateCrisisRequest() { Name = "test", Description = "test", TeamIds = new List <int>() { 1, 2 } }; var handler = new CreateCrisisHandler(context); var result = await handler.Handle(request, CancellationTokenHelper.GetCancellationToken()); result.IsSuccess.Should().BeTrue(); result.Value.Should().BeOfType <BaseCrisisViewModel>(); result.Value.Name.Should().Be("test"); result.Value.Id.Should().NotBe(0); result.Value.Teams.Count.Should().Be(2); }
public async Task CreateCrisis_RequestTeamIdsEmpty_ReturnFail() { var request = new CreateCrisisRequest() { Name = "test", TeamIds = new List <int>() }; using var context = new AppDbContext(DbHelper.GetDbContextOptions()); var handler = new CreateCrisisHandler(context); var result = await handler.Handle(request, CancellationTokenHelper.GetCancellationToken()); result.IsFailed.Should().BeTrue(); result.WithError("Request team empty"); }
public async Task <Result <BaseCrisisViewModel> > Handle(CreateCrisisRequest request, CancellationToken cancellationToken) { if (request.TeamIds.Count == 0) { return(Result.Fail("Request team empty")); } var teams = await _dbContext .Teams .Where(t => request.TeamIds.Contains(t.Id)) .ToListAsync(cancellationToken); if (teams.Count != request.TeamIds.Count) { return(Result.Fail("Not all teams found")); } var crisisName = CrisisName.Create(request.Name); if (crisisName.IsFailed) { // TODO return result error } var crisis = new Crisis(crisisName.Value, request.Description); foreach (var team in teams) { var result = crisis.AddTeam(team); } _dbContext.Crisises.Add(crisis); await _dbContext.SaveChangesAsync(cancellationToken); var viewModel = BaseCrisisViewModel.Map(crisis); return(Result.Ok(viewModel)); }
public async Task CreateCrisis_NotAllTeamsFound_ReturnFail() { var context = new AppDbContext(DbHelper.GetDbContextOptions()); context.Teams.Add(new Team(name: "Team 1", description: "Description 1")); context.Teams.Add(new Team(name: "Team 2", description: "Description 2")); context.SaveChanges(); var request = new CreateCrisisRequest() { Name = "test", Description = "test", TeamIds = new List <int>() { 1, 2, 3 } }; var handler = new CreateCrisisHandler(context); var result = await handler.Handle(request, CancellationTokenHelper.GetCancellationToken()); result.IsFailed.Should().BeTrue(); result.WithError("Not all teams found"); }
public async Task <ActionResult <object> > Create([FromBody] CreateCrisisRequest request) { var result = await _mediator.Send(request); return(Ok(result)); }