public IActionResult createBoard([FromBody] BoardCreationDto creationDto)
        {
            BoardGame     board   = boardCreationService.createBoardGame(creationDto.size);
            List <Player> players = playerCreationService.createPlayers(creationDto.players);

            return(ExecuteApiAction(() => new ApiResult <BoardGameDTO> {
                Model = gameService.processMove(board, players[0], players)
            }));
        }
        public void WillPassTheSizeFromTheCreationDtoToTheBoardCreation()
        {
            BoardCreationDto boardCreationDto = new BoardCreationDto();

            boardCreationDto.size = 3;
            Mock <IPlayerCreationService> mockPlayerService = new Mock <IPlayerCreationService>();

            mockPlayerService.Setup(x => x.createPlayers(It.IsAny <List <JObject> >()))
            .Returns(new List <Player>
            {
                new Mock <Player>().Object
            });
            Mock <BoardCreationService> mockCreationService = new Mock <BoardCreationService>(MockBehavior.Strict);

            mockCreationService.Setup(x => x.createBoardGame(3)).Returns((BoardGame)null).Verifiable();
            cont = new GameController(new Mock <IGameService>().Object, mockCreationService.Object, mockPlayerService.Object);
            cont.createBoard(boardCreationDto);
            mockCreationService.Verify();
        }
        public void WillPassThePlayersFromThePlayerArrayToThePlayerCreationService()
        {
            BoardCreationDto boardCreationDto = new BoardCreationDto();

            boardCreationDto.players = new List <JObject>
            {
                new JObject()
            };
            Mock <BoardCreationService>   mockCreationService = new Mock <BoardCreationService>();
            Mock <IPlayerCreationService> mockPlayerService   = new Mock <IPlayerCreationService>(MockBehavior.Strict);

            mockPlayerService.Setup(x => x.createPlayers(boardCreationDto.players))
            .Returns(new List <Player>
            {
                new Mock <Player>().Object
            })
            .Verifiable();
            cont = new GameController(new Mock <IGameService>().Object, mockCreationService.Object, mockPlayerService.Object);
            cont.createBoard(boardCreationDto);
            mockPlayerService.Verify();
        }
        public void WillPassTheFirstPlayerReturnedAsTheCurrentPlayerToTheGameService()
        {
            Mock <IGameService>           mockGameServce      = new Mock <IGameService>(MockBehavior.Strict);
            Mock <BoardCreationService>   mockCreationService = new Mock <BoardCreationService>();
            Mock <IPlayerCreationService> mockPlayerService   = new Mock <IPlayerCreationService>();
            Mock <Player> mockPlayer = new Mock <Player>();

            mockPlayerService.Setup(x => x.createPlayers(It.IsAny <List <JObject> >()))
            .Returns(new List <Player>
            {
                mockPlayer.Object, null
            });
            mockGameServce.Setup(x => x.processMove(null, mockPlayer.Object, It.IsAny <List <Player> >()))
            .Returns((BoardGameDTO)null)
            .Verifiable();
            BoardCreationDto creationDto = new BoardCreationDto();

            cont = new GameController(mockGameServce.Object, mockCreationService.Object, mockPlayerService.Object);
            cont.createBoard(creationDto);
            mockGameServce.Verify();
        }