示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#4
0
        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);
        }