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