Пример #1
0
        public void PlayerVotingOwnCardShouldThrowInvalidOperationException()
        {
            //arrange
            var lobby = new LobbyBuilder()
                        .WithPlayers(_players)
                        .WithRoundOne()
                        .WithPlayedCards()
                        .Build();

            var mediator            = new Mock <IMediator>();
            var lobbyRepositoryMock = new Mock <ILobbyRepository>();

            lobbyRepositoryMock.Setup(lobbyRepo => lobbyRepo.GetLobbyByCode(It.IsAny <string>())).Returns(Task.FromResult(lobby));
            var lobbyRepository = lobbyRepositoryMock.Object;
            var scoreService    = new Mock <IScoreService>();
            var command         = new VoteCardCommandHandler(mediator.Object, scoreService.Object, lobbyRepository);
            var request         = new VoteCardCommand
            {
                Card   = lobby.CurrentPlayedCards.FirstOrDefault(card => card.Owner.Name == _players[1]).Id,
                Code   = lobby.Code,
                Player = _players[1]
            };

            //act
            Func <Task> action = async() => await command.Handle(request, CancellationToken.None);

            //assert
            action.Should().Throw <InvalidOperationException>();
        }
Пример #2
0
        public async Task GameStateShouldBeVotingWhenNotAllPlayersVoted()
        {
            //arrange
            var lobby = new LobbyBuilder()
                        .WithPlayers(_players)
                        .WithRoundOne()
                        .WithPlayedCards()
                        .Build();

            var mediator            = new Mock <IMediator>();
            var lobbyRepositoryMock = new Mock <ILobbyRepository>();

            lobbyRepositoryMock.Setup(lobbyRepo => lobbyRepo.GetLobbyByCode(It.IsAny <string>())).Returns(Task.FromResult(lobby));
            var lobbyRepository = lobbyRepositoryMock.Object;
            var scoreService    = new Mock <IScoreService>();
            var command         = new VoteCardCommandHandler(mediator.Object, scoreService.Object, lobbyRepository);
            var request         = new VoteCardCommand
            {
                Card   = lobby.CurrentPlayedCards.FirstOrDefault(card => card.Owner.Name != _players[1]).Id,
                Code   = lobby.Code,
                Player = _players[1]
            };

            //act
            await command.Handle(request, CancellationToken.None);

            //assert
            lobby.GameState.Should().Equals(State.InProgress);
        }
Пример #3
0
        public void AggregateLobbyGameState_ShouldEqualDataLobbyGameState()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .WithRoundOne()
                              .WithPlayedCards()
                              .WithVotedCards()
                              .Build();
            //act
            var data = lobbyMapper.Map(lobby);

            //assert
            data.GameState.Should().Equals(lobby.GameState);
        }
Пример #4
0
        public void ReverseMapDataWithRounds_ShouldReturnSameLobby()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .WithRoundOne()
                              .WithPlayedCards()
                              .WithVotedCards()
                              .WithRoundTwo()
                              .Build();
            var data = lobbyMapper.Map(lobby);

            //act
            var dataReversed = lobbyMapper.Map(lobbyMapper.Map(data));

            //assert
            data.Should().BeEquivalentTo(dataReversed);
        }
Пример #5
0
        public void ReverseMapAggregateInitialGame_ShouldReturnSameLobby()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .Build();

            lobby.NewRound();
            lobby.DealDeck();

            //act
            var data          = lobbyMapper.Map(lobby);
            var lobbyReversed = lobbyMapper.Map(lobbyMapper.Map(lobby));

            //assert

            lobby.Should().BeEquivalentTo(lobbyReversed);
            lobby.Rounds.Count.Should().Be(1);
        }
Пример #6
0
        public void AggregateLobbyStoryTellerShouldEqualDataStoryTellerOwner()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .WithRoundOne()
                              .WithPlayedCards()
                              .Build();

            //act
            var lobbyReversed = lobbyMapper.Map(lobbyMapper.Map(lobby));

            //assert
            lobbyReversed.CurrentRound.Story.Should().Equals(lobby.CurrentRound.Story);
            lobbyReversed.CurrentRound.StoryTeller.Should().Equals(lobby.CurrentRound.StoryTeller);
            lobbyReversed.CurrentRound.StoryTellerCard.Should().Equals(lobby.CurrentRound.StoryTellerCard);
            lobbyReversed.CurrentRound.StoryTellerCard.Owner.Should().Be(lobby.CurrentRound.StoryTeller);
            lobbyReversed.CurrentRound.StoryTellerCard.Owner.Should().NotBeNull();
        }
Пример #7
0
        public void ReverseMapAggregateWithRounds_ShouldReturnSameLobby()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .WithRoundOne()
                              .WithPlayedCards()
                              .WithVotedCards()
                              .Build();

            //act
            var data          = lobbyMapper.Map(lobby);
            var lobbyReversed = lobbyMapper.Map(lobbyMapper.Map(lobby));

            //assert
            lobby.Should().BeEquivalentTo(lobbyReversed);
            lobby.Rounds.Count.Should().Be(1);
            lobby.CurrentStoryCard.Owner.Should().NotBeNull();
            lobby.CurrentStoryCard.Owner.Should().BeEquivalentTo(lobby.CurrentStoryTeller);
        }
Пример #8
0
        public void AggregateLobbyStoryTellerShouldEqualDataStoryTeller()
        {
            //arrange
            var lobbyMapper = new LobbyMapper(_mapperFixture.GetLobbyMapper());
            var lobby       = new LobbyBuilder()
                              .WithPlayers(_players)
                              .WithRoundOne()
                              .WithPlayedCards()
                              .WithVotedCards()
                              .WithRoundTwo()
                              .Build();

            //act
            var data = lobbyMapper.Map(lobby);

            //assert
            var round = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Round> >(data.Rounds).Last();

            round.Story.Should().Equals(lobby.CurrentRound.Story);
            round.StoryTeller.Should().Equals(lobby.CurrentRound.StoryTeller);
            round.StoryTellerCard.Should().Equals(lobby.CurrentRound.StoryTellerCard);
            round.StoryTellerCard.Should().Equals(lobby.CurrentRound.StoryTellerCard);
        }
Пример #9
0
        public async Task GameStateShouldBeStoryWhenAllPlayerVotes()
        {
            //arrange
            var lobby = new LobbyBuilder()
                        .WithPlayers(_players)
                        .WithRoundOne()
                        .WithPlayedCards()
                        .WithVotedCardsExceptPlayer(_players[4])
                        .Build();

            var mediator            = new Mock <IMediator>();
            var lobbyRepositoryMock = new Mock <ILobbyRepository>();

            lobbyRepositoryMock.Setup(lobbyRepo => lobbyRepo.GetLobbyByCode(It.IsAny <string>())).Returns(Task.FromResult(lobby));
            var lobbyRepository = lobbyRepositoryMock.Object;
            var scoreService    = new Mock <IScoreService>();

            scoreService.Setup(service => service.VallyVotes(It.IsAny <List <Vote> >(), It.IsAny <Player>(), It.IsAny <Card>())).Returns(new List <ScoreCard> {
            });
            var previousStoryTeller = lobby.CurrentStoryTeller;
            var command             = new VoteCardCommandHandler(mediator.Object, scoreService.Object, lobbyRepository);
            var request             = new VoteCardCommand
            {
                Card   = lobby.CurrentPlayedCards.FirstOrDefault(card => card.Owner.Name != _players[4]).Id,
                Code   = lobby.Code,
                Player = _players[4]
            };

            //act
            await command.Handle(request, CancellationToken.None);

            //assert
            lobby.GameState.Should().Equals(State.Story);
            lobby.CurrentStoryTeller.Should().NotBe(previousStoryTeller);
            scoreService.Verify(service => service.VallyVotes(It.IsAny <List <Vote> >(), It.IsAny <Player>(), It.IsAny <Card>()), Times.Once());
        }