예제 #1
0
        public ObjectResult ApiBattleShipPost(int boardId,
                                              BattleShipToBeCreatedRequest battleShipToBeCreatedRequest)
        {
            logger.LogDebug("Start - Request for new battle ship");

            ObjectResult result = null;

            var battleShip = BattleShipFactory(boardId, battleShipToBeCreatedRequest);

            // prep board to ask question
            var board = boardRepo.Get(boardId);
            // ask board whether given battle ship can be added
            var battleShipAssociation = board.CanAddBattleShip(battleShip);

            // if can be associated save the battle ship to database
            if (battleShipAssociation.Status == true)
            {
                var battleShipFromRepo = battleShipService
                                         .SaveBattleShip(boardId, battleShip.BattleShipBlocks);
                var successResponse = ResponseFactory.Create(battleShipFromRepo);

                result = CreatedAtAction(nameof(ApiBattleShipGet),
                                         new { boardId, id = successResponse.Id }, successResponse);
            }
            else
            {
                // 404 Error
                result = new BadRequestObjectResult(battleShipAssociation);
            }

            logger.LogDebug("End - Request for new battle ship");

            return(result);
        }
예제 #2
0
        public void ReturnCreatedAtResult()
        {
            //arrange
            var blockNumbers = new List <int> {
                91, 92, 93, 94, 95
            };
            var battleShipBlocks = new BattleShipToBeCreatedRequest
            {
                BlockNumbers = blockNumbers
            };
            var expectedBattleShip = Helper.FakeBattleShipFactory(blockNumbers, 5);

            var moqBattleShipService = new Mock <IBattleShipService>();

            moqBattleShipService
            .Setup(br => br.SaveBattleShip(It.IsAny <int>(), It.IsAny <List <BattleShipBlock> >()))
            .Returns(expectedBattleShip);

            var fakeBattleShipService = moqBattleShipService.Object;
            var fakeBattleShipRepo    = new Mock <IBattleShipRepo>().Object;
            var fakeBlockRepo         = new Mock <IBlockRepo>().Object;
            //sut
            var sut = new BattleShipController(
                fakeBoardRepo, fakeBattleShipRepo,
                fakeBlockRepo, fakeBattleShipService, fakeLogger);

            //act
            var response = sut.ApiBattleShipPost(Helper.FAKE_BOARD_ID, battleShipBlocks);

            //assert
            Assert.AreEqual((int)HttpStatusCode.Created, response.StatusCode);
        }
예제 #3
0
        private BattleShip BattleShipFactory(
            int boardId, BattleShipToBeCreatedRequest battleShipToBeCreatedRequest)
        {
            var blocksToAssociate = battleShipToBeCreatedRequest.BlockNumbers
                                    .Select(n => new BattleShipBlock
            {
                Block = new Block
                {
                    BoardId = boardId,
                    Number  = n
                }
            })
                                    .ToList();
            var battleShip = new BattleShip()
            {
                BoardId          = boardId,
                BattleShipBlocks = blocksToAssociate
            };

            return(battleShip);
        }