Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }