public ObjectResult ApiAttackPost(int boardId, BlockToAttackRequest blockToAttack) { var requestlogger = string.Format( "Start - Request for attack on board {0} and block number {1}", boardId, blockToAttack.Number); logger.LogDebug($"Start - {requestlogger}"); ObjectResult result = null; var block = new Block { BoardId = boardId, Number = blockToAttack.Number }; // prep board to ask question var board = boardRepo.Get(boardId); // ask board whether given block can be attacked var attackResult = board.CanAttackBlock(block); // if attack is successful save the entity in database if (attackResult.Status == true) { var blockUnderAttack = board.Blocks.First(b => b.Number == blockToAttack.Number); var attack = new Attack { BlockId = blockUnderAttack.Id }; attackRepo.Create(attack); result = CreatedAtAction(nameof(ApiAttackGet), new { boardId, id = attack.Id }, attackResult); } else { // 404 result = new BadRequestObjectResult(attackResult); } logger.LogDebug($"End - {requestlogger}"); return(result); }
public void ReturnCreatedAtResult() { //arrange var blockToAttack = new BlockToAttackRequest { Number = 1 }; var moqAttackRepo = new Mock <IAttackRepo>(); moqAttackRepo.Setup(repo => repo.Create(It.IsAny <Attack>())); var fakeAttackRepo = moqAttackRepo.Object; var controller = new AttackController( fakeBoardRepo, fakeAttackRepo, fakeLogger); //act var response = controller.ApiAttackPost(Helper.FAKE_BOARD_ID, blockToAttack); //assert Assert.AreEqual((int)HttpStatusCode.Created, response.StatusCode); }