public async Task PatchAsync_ModelStateInvalid_ValidateModelStateEnabled() { // arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateService <Resource> >(); _jsonApiContextMock.SetupGet(a => a.ContextGraph).Returns(_contextGraphMock.Object); _contextGraphMock.Setup(a => a.GetPublicAttributeName <Resource>("TestAttribute")).Returns("test-attribute"); _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, update: serviceMock.Object); controller.ModelState.AddModelError("TestAttribute", "Failed Validation"); // act var response = await controller.PatchAsync(id, resource); // assert serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Never); Assert.IsType <UnprocessableEntityObjectResult>(response); Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value); }
public async Task PatchAsync_Throws_405_If_No_Service() { // arrange const int id = 0; var serviceMock = new Mock <IUpdateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, update: null); // act var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.PatchAsync(id, It.IsAny <Resource>())); // assert Assert.Equal(405, exception.GetStatusCode()); }
public async Task PatchAsync_Calls_Service() { // arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, update: serviceMock.Object); // act await controller.PatchAsync(id, resource); // assert serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once); VerifyApplyContext(); }
public async Task PatchAsync_ModelStateInvalid_ValidateModelStateDisbled() { // Arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new JsonApiOptions(), update: serviceMock.Object); // Act var response = await controller.PatchAsync(id, resource); // Assert serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once); Assert.IsNotType <BadRequestObjectResult>(response); }
public async Task PatchAsync_ModelStateInvalid_ValidateModelStateDisbled() { // arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateService <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, update: serviceMock.Object); // act var response = await controller.PatchAsync(id, resource); // assert serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once); VerifyApplyContext(); Assert.IsNotType <BadRequestObjectResult>(response); }
public async Task PatchAsync_ModelStateInvalid_ValidateModelStateEnabled() { // Arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new JsonApiOptions { ValidateModelState = true }, update: serviceMock.Object); controller.ModelState.AddModelError("TestAttribute", "Failed Validation"); // Act var response = await controller.PatchAsync(id, resource); // Assert serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Never); Assert.IsType <UnprocessableEntityObjectResult>(response); Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value); }