public async Task PostAsync_ModelStateInvalid_ValidateModelStateDisabled() { // arrange var resource = new Resource(); var serviceMock = new Mock <ICreateService <Resource> >(); _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object); _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions { ValidateModelState = false }); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, create: serviceMock.Object); serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource); controller.ControllerContext = new Microsoft.AspNetCore.Mvc.ControllerContext { HttpContext = new DefaultHttpContext() }; // act var response = await controller.PostAsync(resource); // assert serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Once); VerifyApplyContext(); Assert.IsNotType <BadRequestObjectResult>(response); }
public async Task PostAsync_Calls_Service() { // Arrange var resource = new Resource(); var serviceMock = new Mock <ICreateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new JsonApiOptions(), create: serviceMock.Object); serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource); controller.ControllerContext = new Microsoft.AspNetCore.Mvc.ControllerContext { HttpContext = new DefaultHttpContext() }; // Act await controller.PostAsync(resource); // Assert serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Once); }
public async Task PostAsync_ModelStateInvalid_ValidateModelStateEnabled() { // arrange var resource = new Resource(); var serviceMock = new Mock <ICreateService <Resource> >(); _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object); _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions { ValidateModelState = true }); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, create: serviceMock.Object); controller.ModelState.AddModelError("Id", "Failed Validation"); // act var response = await controller.PostAsync(resource); // assert serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Never); Assert.IsType <BadRequestObjectResult>(response); Assert.IsType <ErrorCollection>(((BadRequestObjectResult)response).Value); }
public async Task PostAsync_ModelStateInvalid_ValidateModelStateEnabled() { // Arrange var resource = new Resource(); var serviceMock = new Mock <ICreateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new JsonApiOptions { ValidateModelState = true }, create: serviceMock.Object); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }; controller.ModelState.AddModelError("TestAttribute", "Failed Validation"); serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource); // Act var response = await controller.PostAsync(resource); // Assert serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Never); Assert.IsType <UnprocessableEntityObjectResult>(response); Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value); }