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"); }
public void NewGameExceptionMustBeThrownWhenPlayerBNotExistsInDatabase() { // Given playerMock.SetupSequence(m => m.GetPlayerById(It.IsAny <long>())) .Returns(new Player("")) .Throws(new NotExistingValueException("", ErrorCode.VALUE_NOT_EXISTING_IN_DATABASE)); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); // Then NotValidValueException resp = Assert.Throws <NotValidValueException>(() => service.NewGame(new BoringToeNewGameRequest(10, 20)), "New game must raise an exception"); Assert.AreEqual(ErrorCode.PLAYER_B_NOT_EXISTING, resp.ErrorCode, "Exception's error code must be PLAYER_B_NOT_EXISTING"); playerMock.Verify(m => m.GetPlayerById(It.IsAny <long>()), Times.Exactly(2), "Must call 2 times to player repository get"); }
public void IfPlayerDoesntExistInRepoExceptionMustBeThrown() { // Given playerMock.Setup(m => m.GetPlayerById(It.IsAny <long>())) .Throws(new NotExistingValueException("", ErrorCode.VALUE_NOT_EXISTING_IN_DATABASE)); gameMock.Setup(m => m.GetGameById(It.IsAny <long>())) .Returns(tictacMock.Object); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); // Then NotValidValueException exc = Assert.Throws <NotValidValueException>(() => service.PlayerMove(1, new BoringToeMoveRequest(1, 1, 1)), "Player move must raise NotValidValueException"); Assert.AreEqual(ErrorCode.PLAYER_NOT_EXISTS, exc.ErrorCode, "Exception's code must be PLAYER_NOT_EXISTS"); }
public void IfPlayerDoesntExistInGameExceptionMustBeRethrown() { // Given tictacMock.Setup(m => m.PlayerMove(It.IsAny <Player>(), It.IsAny <Coordinate>())) .Throws(new NotValidValueException("", ErrorCode.PLAYER_NOT_EXISTS)); gameMock.Setup(m => m.GetGameById(It.IsAny <long>())) .Returns(tictacMock.Object); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); // Then NotValidValueException exc = Assert.Throws <NotValidValueException>(() => service.PlayerMove(1, new BoringToeMoveRequest(1, 1, 1)), "Player move must raise NotValidValueException"); Assert.AreEqual(ErrorCode.PLAYER_NOT_EXISTS, exc.ErrorCode, "Exception's code must be PLAYER_NOT_EXISTS"); 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 NewGameMustReturnGameIdInRepo() { // Given long mockedGameId = 1; playerMock.SetupSequence(m => m.GetPlayerById(It.IsAny <long>())) .Returns(new Player("")) .Returns(new Player("")); gameMock.Setup(m => m.AddGame(It.IsAny <TicTacToeImpl>())) .Returns(mockedGameId); // When IBoringToeService service = new BoringToeService(gameMock.Object, playerMock.Object); long resp = service.NewGame(new BoringToeNewGameRequest(10, 20)); // Then Assert.AreEqual(mockedGameId, resp, "Added game Id must be mocked one"); playerMock.Verify(m => m.GetPlayerById(It.IsAny <long>()), Times.Exactly(2), "Must call 2 times to player repository get"); gameMock.Verify(m => m.AddGame(It.IsAny <TicTacToeImpl>()), Times.Once, "Must call game repository add game once"); }