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 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 GetAsync_Calls_Service() { // Arrange var serviceMock = new Mock <IGetAllService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getAll: serviceMock.Object); // Act await controller.GetAsync(); // Assert serviceMock.Verify(m => m.GetAsync(), Times.Once); }
public async Task GetAsync_Throws_405_If_No_Service() { // arrange var serviceMock = new Mock <IGetAllService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, null); // act var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.GetAsync()); // assert Assert.Equal(405, exception.GetStatusCode()); }
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>(new Mock <IJsonApiOptions>().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 GetRelationshipsAsync_Throws_405_If_No_Service() { // Arrange const int id = 0; var serviceMock = new Mock <IGetRelationshipsService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getRelationships: null); // Act var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.GetRelationshipsAsync(id, string.Empty)); // Assert Assert.Equal(405, exception.GetStatusCode()); }
public async Task DeleteAsync_Throws_405_If_No_Service() { // arrange const int id = 0; var serviceMock = new Mock <IUpdateRelationshipService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, delete: null); // act var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.DeleteAsync(id)); // assert Assert.Equal(405, exception.GetStatusCode()); }
public async Task GetAsync_Calls_Service() { // arrange var serviceMock = new Mock <IGetAllService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, getAll: serviceMock.Object); // act await controller.GetAsync(); // assert serviceMock.Verify(m => m.GetAsync(), Times.Once); VerifyApplyContext(); }
public async Task GetRelationshipsAsync_Calls_Service() { // Arrange const int id = 0; var serviceMock = new Mock <IGetRelationshipsService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getRelationships: serviceMock.Object); // Act await controller.GetRelationshipsAsync(id, string.Empty); // Assert serviceMock.Verify(m => m.GetRelationshipsAsync(id, string.Empty), Times.Once); }
public async Task GetRelationshipAsync_Calls_Service() { // arrange const int id = 0; var serviceMock = new Mock <IGetRelationshipService <Resource> >(); var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, getRelationship: serviceMock.Object); // act await controller.GetRelationshipAsync(id, string.Empty); // assert serviceMock.Verify(m => m.GetRelationshipAsync(id, string.Empty), Times.Once); VerifyApplyContext(); }
public async Task DeleteAsync_Calls_Service() { // Arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IDeleteService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, delete: serviceMock.Object); // Act await controller.DeleteAsync(id); // Assert serviceMock.Verify(m => m.DeleteAsync(id), Times.Once); }
public async Task PatchRelationshipsAsync_Calls_Service() { // Arrange const int id = 0; var resource = new Resource(); var serviceMock = new Mock <IUpdateRelationshipService <Resource> >(); var controller = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, updateRelationships: serviceMock.Object); // Act await controller.PatchRelationshipsAsync(id, string.Empty, null); // Assert serviceMock.Verify(m => m.UpdateRelationshipsAsync(id, string.Empty, null), Times.Once); }
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_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 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 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); }
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); }