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