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>(); }
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); }
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); }
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); }
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); }
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(); }
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); }
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); }
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()); }