public void GamePutMustReturnGameStatus() { // Given Player player = new Player(); BoringToeMoveResponse returnData = new BoringToeMoveResponse(player, gridMock.Object); returnData.GameOver = true; returnData.Repeat = false; returnData.Winner = player; serviceMock.Setup(m => m.PlayerMove(It.IsAny <long>(), It.IsAny <BoringToeMoveRequest>())) .Returns(returnData); BoringToeController controller = new BoringToeController(serviceMock.Object); // When OkObjectResult resp = controller.Put(100, new BoringToeMoveRequest()) as OkObjectResult; BoringToeMoveResponse respData = resp.Value as BoringToeMoveResponse; // Then Assert.IsInstanceOf <BoringToeMoveResponse>(resp.Value, "Value must be if type BoringToeMoveResponse"); Assert.AreEqual(returnData.GameOver, respData.GameOver, "Responses GameOver flag must be mocked one"); Assert.AreEqual(returnData.Repeat, respData.Repeat, "Responses Repeat flag must be mocked one"); Assert.AreEqual(player, respData.Winner, "Responses Winner must be mocked player"); Assert.AreEqual(player, respData.Player, "Responses Winner must be mocked player"); serviceMock.Verify(v => v.PlayerMove(It.IsAny <long>(), It.IsAny <BoringToeMoveRequest>()), Times.Once, "Service's Player Move must be called 1 time"); }
public void PlayerMoveMustReturnNextPlayer() { // Given string gridString = "AAABBBAAA"; gridMock.Setup(m => m.ToString()) .Returns(gridString); Player respPlayer = new Player(); tictacMock.Setup(m => m.PlayerMove(It.IsAny <Player>(), It.IsAny <Coordinate>())) .Returns(respPlayer); tictacMock.Setup(m => m.GetGrid()) .Returns(gridMock.Object); gameMock.Setup(m => m.GetGameById(It.IsAny <long>())) .Returns(tictacMock.Object); playerMock.Setup(m => m.GetPlayerById(It.IsAny <long>())) .Returns(respPlayer); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); BoringToeMoveResponse resp = service.PlayerMove(1, new BoringToeMoveRequest(1, 1, 1)); // Then Assert.AreEqual(respPlayer, resp.Player, "Response's player must be mocked one"); Assert.AreEqual(false, resp.GameOver, "Response's game over flag must be false"); Assert.IsNull(resp.Winner, "Response's winner data must be null"); Assert.AreEqual(false, resp.Repeat, "Response's repeat flag must be false"); Assert.AreEqual(gridString, resp.Grid, "Response's grid must be mocked one"); tictacMock.Verify(m => m.PlayerMove(It.IsAny <Player>(), It.IsAny <Coordinate>()), Times.Once, "Must call game's playermove once"); gameMock.Verify(m => m.GetGameById(It.IsAny <long>()), Times.Once, "Must call game repository get game once"); }
public void PlayerMoveMustRetryIfPlayerMovementExceptionIsRaised() { // Given Player respPlayer = new Player(); string gridString = "AAABBBAAA"; gridMock.Setup(m => m.ToString()) .Returns(gridString); tictacMock.Setup(m => m.PlayerMove(It.IsAny <Player>(), It.IsAny <Coordinate>())) .Throws(new PlayerMovementException("", ErrorCode.MOVEMENT_ERROR_MUST_RETRY)); tictacMock.Setup(m => m.GetGrid()) .Returns(gridMock.Object); gameMock.Setup(m => m.GetGameById(It.IsAny <long>())) .Returns(tictacMock.Object); playerMock.Setup(m => m.GetPlayerById(It.IsAny <long>())) .Returns(respPlayer); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); BoringToeMoveResponse resp = service.PlayerMove(1, new BoringToeMoveRequest(1, 1, 1)); // Then Assert.AreEqual(respPlayer, resp.Player, "Response's player must be mocked one"); Assert.AreEqual(false, resp.GameOver, "Response's game over flag must be false"); Assert.IsNull(resp.Winner, "Response's winner info must be null"); Assert.AreEqual(true, resp.Repeat, "Response's repeat flag must be true"); Assert.AreEqual(gridString, resp.Grid, "Response's grid must be mocked one"); tictacMock.Verify(m => m.PlayerMove(It.IsAny <Player>(), It.IsAny <Coordinate>()), Times.Once, "Must call game's playermove once"); gameMock.Verify(m => m.GetGameById(It.IsAny <long>()), Times.Once, "Must call game repository get game once"); }
/// <summary> /// Generates user repeat response data object /// </summary> /// <param name="player">Player info</param> /// <param name="grid">Grid</param> /// <returns>Service response data</returns> private BoringToeMoveResponse GenerateRepeatUserResponseData(Player player, IGrid grid) { BoringToeMoveResponse resp = new BoringToeMoveResponse(player, grid); resp.GameOver = false; resp.Repeat = true; resp.Winner = null; resp.Grid = grid.ToString(); return(resp); }
/// <summary> /// Generates Game Over no winner response data object /// </summary> /// <param name="grid">Grid</param> /// <returns>Service response data</returns> private BoringToeMoveResponse GenerateGameOverNoWinnerResponseData(IGrid grid) { BoringToeMoveResponse resp = new BoringToeMoveResponse(null, grid); resp.GameOver = true; resp.Repeat = false; resp.Winner = null; resp.Grid = grid.ToString(); return(resp); }
public void GamePutMustReturnOk() { // Given Player player = new Player(); BoringToeMoveResponse respData = new BoringToeMoveResponse(player, gridMock.Object); respData.GameOver = true; respData.Repeat = false; respData.Winner = player; serviceMock.Setup(m => m.PlayerMove(It.IsAny <long>(), It.IsAny <BoringToeMoveRequest>())) .Returns(respData); BoringToeController controller = new BoringToeController(serviceMock.Object); // When ActionResult resp = controller.Put(100, new BoringToeMoveRequest()); // Then Assert.IsInstanceOf <OkObjectResult>(resp, "Value must be if type OkObjectResult"); }