public async Task Handle_GivenInvalidRequest_ShouldThrowTeamIsFullException() { // Arrange var command = new AddPlayerCommand { TeamId = 1, PlayerId = "Foo5" }; var playerTeamsRepository = new EfDeletableEntityRepository <PlayerTeam>(this.dbContext); var sut = new AddPlayerCommandHandler(this.deletableEntityRepository, playerTeamsRepository); for (int i = 0; i < 10; i++) { var player = new Player { UserName = $"Placeholder{i}", Email = "foomail.bg", }; this.dbContext.Add(player); this.dbContext.PlayerTeams.Add(new PlayerTeam { TeamId = 1, PlayerId = player.Id }); this.dbContext.SaveChanges(); } // Act & Assert await Should.ThrowAsync <TeamIsFullException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task AddPlayerCommand_Can_Add_Player() { var dbContext = GetDbContext("AddPlayerCommand_Can_Add_Player"); using (dbContext) { var fakeRepo = new PlayerRepository(dbContext); var fakeLogger = new Mock <ILogger <AddPlayerCommandHandler> >(); var handler = new AddPlayerCommandHandler(fakeRepo, GetMapper(), fakeLogger.Object); var command = new AddPlayerCommand { Name = "FirstName", Surname = "LastName", Height = 1.98, EmailAddress = "*****@*****.**" }; var result = await handler.Handle(command, default); Assert.False(result.Notifications.HasErrors()); Assert.Equal(command.Name, result.PlayerLookupModel.Name); Assert.Equal(command.Surname, result.PlayerLookupModel.Surname); Assert.Equal(command.Height, result.PlayerLookupModel.Height); Assert.Equal(command.EmailAddress, result.PlayerLookupModel.EmailAddress); } }
public async Task Handle_GivenNullRequest_ShouldThrowArgumentNullException() { // Arrange var sut = new AddPlayerCommandHandler(It.IsAny <IDeletableEntityRepository <Team> >(), It.IsAny <IDeletableEntityRepository <PlayerTeam> >()); // Act & Assert await Should.ThrowAsync <ArgumentNullException>(sut.Handle(null, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenInvalidRequest_ShouldThrowNotFoundException() { // Arrange var command = new AddPlayerCommand { TeamId = 313, PlayerId = "Foo5" }; var playerTeamsRepository = new EfDeletableEntityRepository <PlayerTeam>(this.dbContext); var sut = new AddPlayerCommandHandler(this.deletableEntityRepository, playerTeamsRepository); // Act & Assert await Should.ThrowAsync <NotFoundException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task Handle_GivenValidRequest_ShouldAddPlayerToTeam() { // Arrange var command = new AddPlayerCommand { TeamId = 1, PlayerId = "Foo5" }; var playerTeamsRepository = new EfDeletableEntityRepository <PlayerTeam>(this.dbContext); var sut = new AddPlayerCommandHandler(this.deletableEntityRepository, playerTeamsRepository); // Act var affectedRows = await sut.Handle(command, It.IsAny <CancellationToken>()); // Assert affectedRows.ShouldBeGreaterThan(0); var isPlayerPresent = playerTeamsRepository.AllAsNoTracking().Any(x => x.PlayerId == "Foo5" && x.TeamId == 1); isPlayerPresent.ShouldBe(true); }
public async Task Handle_GivenInvalidRequest_ShouldThrowPlayerCannotBeAMemeberOfMultipleTeamsWithTheSameFormatException() { // Arrange var command = new AddPlayerCommand { TeamId = 1, PlayerId = "Foo2" }; var playerTeamsRepository = new EfDeletableEntityRepository <PlayerTeam>(this.dbContext); var sut = new AddPlayerCommandHandler(this.deletableEntityRepository, playerTeamsRepository); // Act & Assert await Should.ThrowAsync <PlayerCannotBeAMemeberOfMultipleTeamsWithTheSameFormatException>(sut.Handle(command, It.IsAny <CancellationToken>())); }
public async Task Handle_PlayerModelCorrect_PlayerAdded() { var player = await _sut.Handle(_factory.Commands.AddPlayer(), CancellationToken.None); player.Should().Be(_factory.CreatedPlayerId); }