public void PositionShipOnGrid_ShouldUseServiceToPositionTheShip() { //Arrange Guid gameId = Guid.NewGuid(); ShipPositioningModel model = new ShipPositioningModelBuilder().Build(); Result expectedResult = Result.CreateSuccessResult(); _gameServiceMock.Setup(service => service.PositionShipOnGrid(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <ShipKind>(), It.IsAny <GridCoordinate[]>())) .Returns(expectedResult); //Act var result = _controller.PositionShipOnGrid(gameId, model).Result as OkObjectResult; //Assert Assert.That(result, Is.Not.Null, "An instance of 'OkObjectResult' should be returned."); _userManagerMock.Verify(manager => manager.GetUserAsync(It.IsAny <ClaimsPrincipal>()), Times.Once, "The 'GetUserAsync' of the UserManager is not called"); _gameServiceMock.Verify(service => service.PositionShipOnGrid(gameId, _loggedInUser.Id, It.Is <ShipKind>(kind => kind.Code == model.ShipCode), It.Is <GridCoordinate[]>(ca => ca.Length == model.SegmentCoordinates.Length && ca.All(c => model.SegmentCoordinates.Any(mc => c.Row == mc.Row && c.Column == mc.Column)))), Times.Once, "The 'PositionShipOnGrid' of the IGameService is not called correctly."); Assert.That(result.Value, Is.SameAs(expectedResult)); }
public void PositionShipOnGrid_ShouldReturnBadRequestWhenAnApplicationExceptionOccurs() { //Arrange Guid gameId = Guid.NewGuid(); ShipPositioningModel model = new ShipPositioningModelBuilder().Build(); _gameServiceMock.Setup(service => service.PositionShipOnGrid(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <ShipKind>(), It.IsAny <GridCoordinate[]>())) .Throws <ApplicationException>(); ActAndAssertPositionShipOnGridShouldReturnBadRequest(gameId, model); }