public void Attack_Should_return_miss_when_input_not_in_range_or_ship_not_placed(bool isInRange, bool isBoardCreated, string expected) { // Arrange var response = isBoardCreated ? Tuple.Create <bool, BattleBoard>(isBoardCreated, new BattleBoard() { BoardCells = new BoardCell[5, 5], Length = 2 }) : Tuple.Create <bool, BattleBoard>(isBoardCreated, null); cacheService.Setup(x => x.GetDataFromCache <BattleBoard>(It.IsAny <string>())).Returns(response); validationService.Setup(x => x.IsInRangeToAttack(It.IsAny <int>(), It.IsAny <int>())).Returns(isInRange); // Act var actual = trackerService.Attack(2, 3); // Assert Assert.AreEqual(expected, actual); validationService.Verify(x => x.IsInRangeToAttack(It.IsAny <int>(), It.IsAny <int>()), Times.Once); if (isInRange) { cacheService.Verify(x => x.GetDataFromCache <BattleBoard>(It.IsAny <string>()), Times.Once); } else { cacheService.Verify(x => x.GetDataFromCache <BattleBoard>(It.IsAny <string>()), Times.Never); } }
public ActionResult <string> Attack(Coordinates coordinates) { if (!ModelState.IsValid) { return(BadRequest()); } var response = trackerService.Attack(coordinates.X, coordinates.Y); return(response); }