Exemplo n.º 1
0
        public IActionResult Vote(int gameId, bool inFavor)
        {
            if (!int.TryParse(Request.Headers["X-Player"], out var playerId))
            {
                throw new BadRequestException("X-Player request header is missing");
            }

            var game  = _gameDataService.GetGame(gameId);
            var state = _gameStateProvider.Get(game.GameStateId);

            state.Vote(game, playerId, inFavor);
            return(Ok(Mapper.Map <GameStatusDto>(game)));
        }
Exemplo n.º 2
0
        public IActionResult Choose(int gameId, int chosenPlayerId)
        {
            if (!int.TryParse(Request.Headers["X-Player"], out var playerId))
            {
                throw new BadRequestException("X-Player request header is missing");
            }

            var game = _gameDataService.GetGame(gameId);

            if (!game.HasPlayer(chosenPlayerId))
            {
                throw new EntityNotFoundException <Player>(chosenPlayerId);
            }

            var state = _gameStateProvider.Get(game.GameStateId);

            state.Choose(game, playerId, chosenPlayerId);
            return(Ok(Mapper.Map <GameStatusDto>(game)));
        }
Exemplo n.º 3
0
        public void Vote_WithValidParameters_CallsStateVote()
        {
            // Arrange
            const int  gameId    = 84;
            const int  xPlayerId = 12;
            const bool inFavor   = true;

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["X-Player"] = xPlayerId.ToString();
            var controllerContext = new ControllerContext
            {
                HttpContext = httpContext
            };

            sut.ControllerContext = controllerContext;

            var game = new Game
            {
                GameStateId = GameState.VoteForGovernment
            };

            var gameState = Substitute.For <IGameState>();

            _gameStateProvider.Get(Arg.Any <GameState>()).Returns(gameState);
            _gameDataService.GetGame(gameId).Returns(game);

            // Act
            var result = sut.Vote(gameId, inFavor) as OkObjectResult;

            // Assert
            _gameStateProvider.Received().Get(GameState.VoteForGovernment);
            _gameDataService.Received().GetGame(gameId);
            gameState.Received().Vote(game, xPlayerId, inFavor);
            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();
            result.Value.Should().Be(game);
        }
Exemplo n.º 4
0
        public void Choose_WithValidPlayerId_CallsChooseFunctionAndReturnsOk()
        {
            // Arrange
            const int playerId = 12;
            const int gameId   = 84;
            const int xPlayer  = 33;

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Headers["X-Player"] = xPlayer.ToString();
            var controllerContext = new ControllerContext
            {
                HttpContext = httpContext
            };

            sut.ControllerContext = controllerContext;

            var player = new Player {
                Id = playerId
            };
            Game game = new Game
            {
                Players = new List <Player> {
                    player
                },
                GameStateId = GameState.ChoosePresident
            };
            var gameState = Substitute.For <IGameState>();

            _gameDataService.GetGame(gameId).Returns(game);
            _gameStateProvider.Get(game.GameStateId).Returns(gameState);

            // Act
            sut.Choose(gameId, playerId);
            _gameStateProvider.Received().Get(GameState.ChoosePresident);
            gameState.Received().Choose(game, xPlayer, playerId);
        }