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