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);
            }
        }
Exemple #2
0
        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>()));
        }
Exemple #3
0
        public void SetUp()
        {
            _factory = new PlayersFactory();

            var idGeneratorServiceStub = new Mock <IIdGenerator>();

            idGeneratorServiceStub.Setup(id => id.NewGuid()).Returns(_factory.CreatedPlayerId);

            var dateTimeServiceStub = new Mock <IDateTimeService>();

            dateTimeServiceStub.Setup(dt => dt.UtcNow).Returns(new DateTime(2020, 12, 12));

            var playersServiceStub = new Mock <IPlayersService>();

            playersServiceStub.Setup(ps => ps.IsNicknameUniqueAsync(PlayersFactory.Player1NickName, null))
            .Returns(Task.FromResult(false));

            playersServiceStub.Setup(ps => ps.IsNicknameUniqueAsync(PlayersFactory.Player3NickName, null))
            .Returns(Task.FromResult(true));

            _sut = new AddPlayerCommandHandler(
                Context,
                new NullLogger <AddPlayerCommandHandler>(),
                playersServiceStub.Object,
                dateTimeServiceStub.Object,
                idGeneratorServiceStub.Object);
        }
Exemple #4
0
        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>()));
        }
Exemple #5
0
 public PlayerController(IPlayerRepository playerRepository, IRegistrationPlayerRepository registrationPlayerRepository, IAdminUnitOfWork adminUnitOfWork, AddPlayerCommandHandler addPlayerCommandHandler, UpdatePlayerCommandHandler updatePlayerCommandHandler)
 {
     this._playerRepository             = playerRepository;
     this._registrationPlayerRepository = registrationPlayerRepository;
     this._adminUnitOfWork            = adminUnitOfWork;
     this._addPlayerCommandHandler    = addPlayerCommandHandler;
     this._updatePlayerCommandHandler = updatePlayerCommandHandler;
 }
Exemple #6
0
        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>()));
        }
Exemple #7
0
        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>()));
        }
Exemple #8
0
        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);
        }