Пример #1
0
        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");
        }
Пример #2
0
        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");
        }
Пример #3
0
        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");
        }
Пример #4
0
        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");
        }
Пример #5
0
        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");
        }
Пример #6
0
        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");
        }