public async Task DeleteObservationAsync_ReturnsOk_OnSuccess(int id) { //Arrange var requestingUser = GetUser("Any"); var mockUnitOfWork = new Mock <IUnitOfWork>(); mockUnitOfWork.Setup(w => w.CompleteAsync()) .Returns(Task.CompletedTask); var mockBirdRepo = new Mock <IBirdRepository>(); var mockUserManager = SharedFunctions.InitialiseMockUserManager(); var mockObsRepo = new Mock <IObservationRepository>(); mockObsRepo.Setup(o => o.GetObservationAsync(It.IsAny <int>(), It.IsAny <bool>())) .ReturnsAsync(GetTestObservation(id, requestingUser)); var mockObjectValidator = new Mock <IObjectModelValidator>(); mockObjectValidator.Setup(o => o.Validate(It.IsAny <ActionContext>(), It.IsAny <ValidationStateDictionary>(), It.IsAny <string>(), It.IsAny <Object>())); var mockObsPositionRepo = new Mock <IObservationPositionRepository>(); var mockObsNotesRepo = new Mock <IObservationNoteRepository>(); var controller = new ObservationController( _mapper , _systemClock , mockUnitOfWork.Object , mockBirdRepo.Object , _logger.Object , mockUserManager.Object , mockObsRepo.Object , mockObsPositionRepo.Object , mockObsNotesRepo.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal(requestingUser.UserName) } }; controller.ObjectValidator = mockObjectValidator.Object; // Act var result = await controller.DeleteObservationAsync(id); // Assert var objectResult = Assert.IsType <OkObjectResult>(result); Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode); var actual = Assert.IsType <int>(objectResult.Value); Assert.Equal(actual, id); }
public async Task DeleteObservationAsync_ReturnsBadRequest_OnException(int id, int birdId) { //Arrange var model = GetTestObservationViewModel(id, birdId); var requestingUser = GetUser("Any"); var mockUnitOfWork = new Mock <IUnitOfWork>(); var mockBirdRepo = new Mock <IBirdRepository>(); var mockUserManager = SharedFunctions.InitialiseMockUserManager(); var mockObsRepo = new Mock <IObservationRepository>(); mockObsRepo.Setup(o => o.GetObservationAsync(It.IsAny <int>(), It.IsAny <bool>())) .Throws(new InvalidOperationException()); var mockObjectValidator = new Mock <IObjectModelValidator>(); mockObjectValidator.Setup(o => o.Validate(It.IsAny <ActionContext>(), It.IsAny <ValidationStateDictionary>(), It.IsAny <string>(), It.IsAny <Object>())); var mockObsPositionRepo = new Mock <IObservationPositionRepository>(); var mockObsNotesRepo = new Mock <IObservationNoteRepository>(); var controller = new ObservationController( _mapper , _systemClock , mockUnitOfWork.Object , mockBirdRepo.Object , _logger.Object , mockUserManager.Object , mockObsRepo.Object , mockObsPositionRepo.Object , mockObsNotesRepo.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal(requestingUser.UserName) } }; controller.ObjectValidator = mockObjectValidator.Object; // Act var result = await controller.DeleteObservationAsync(id); // Assert var objectResult = Assert.IsType <ObjectResult>(result); Assert.Equal(StatusCodes.Status500InternalServerError, objectResult.StatusCode); var actual = Assert.IsType <string>(objectResult.Value); Assert.Equal("an unexpected error occurred", actual); }
public async Task DeleteObservationAsync_ReturnsUnauthorised_WhenRequestingUserIsNotObservationOwner(int id, int birdId) { //Arrange var requestingUser = GetUser("Any"); var model = GetTestObservationViewModel(id, birdId, requestingUser); var mockUnitOfWork = new Mock <IUnitOfWork>(); var mockBirdRepo = new Mock <IBirdRepository>(); var mockUserManager = SharedFunctions.InitialiseMockUserManager(); var mockObsRepo = new Mock <IObservationRepository>(); mockObsRepo.Setup(o => o.GetObservationAsync(It.IsAny <int>(), It.IsAny <bool>())) .ReturnsAsync(GetTestObservation(0, new ApplicationUser { UserName = "******" })); var mockObsPositionRepo = new Mock <IObservationPositionRepository>(); var mockObsNotesRepo = new Mock <IObservationNoteRepository>(); var controller = new ObservationController( _mapper , _systemClock , mockUnitOfWork.Object , mockBirdRepo.Object , _logger.Object , mockUserManager.Object , mockObsRepo.Object , mockObsPositionRepo.Object , mockObsNotesRepo.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal(requestingUser.UserName) } }; // Act var result = await controller.DeleteObservationAsync(id); // Assert string expectedMessage = "Requesting user is not allowed to delete this observation"; var objectResult = Assert.IsType <UnauthorizedObjectResult>(result); Assert.Equal(StatusCodes.Status401Unauthorized, objectResult.StatusCode); var actual = Assert.IsType <string>(objectResult.Value); Assert.Equal(expectedMessage, actual); }
public async Task DeleteObservationAsync_ReturnsBadRequest_WhenObservationNotFound(int id) { //Arrange var requestingUser = GetUser("Any"); //var model = GetTestObservationViewModel(id, birdId, requestingUser); var mockUnitOfWork = new Mock <IUnitOfWork>(); var mockBirdRepo = new Mock <IBirdRepository>(); var mockUserManager = SharedFunctions.InitialiseMockUserManager(); var mockObsRepo = new Mock <IObservationRepository>(); mockObsRepo.Setup(obs => obs.GetObservationAsync(It.IsAny <int>(), It.IsAny <bool>())) .Returns(Task.FromResult <Observation>(null)); var mockObsPositionRepo = new Mock <IObservationPositionRepository>(); var mockObsNotesRepo = new Mock <IObservationNoteRepository>(); var controller = new ObservationController( _mapper , _systemClock , mockUnitOfWork.Object , mockBirdRepo.Object , _logger.Object , mockUserManager.Object , mockObsRepo.Object , mockObsPositionRepo.Object , mockObsNotesRepo.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal(requestingUser.UserName) } }; // Act var result = await controller.DeleteObservationAsync(id); // Assert var objectResult = Assert.IsType <ObjectResult>(result); Assert.Equal(StatusCodes.Status500InternalServerError, objectResult.StatusCode); var actual = Assert.IsType <string>(objectResult.Value); Assert.Equal($"Observation with id '{id}' was not found", actual); }