public async Task Should_NotValid_Post()
        {
            //Arrange
            var dataUtil = new StockOpnameWarehouseViewModel();

            var serviceMock = new Mock <IStockOpnameWarehouseService>();

            serviceMock
            .Setup(s => s.Create(It.IsAny <StockOpnameWarehouseViewModel>()))
            .ReturnsAsync(1);

            var service = serviceMock.Object;

            var identityProviderMock = new Mock <IIdentityProvider>();
            var identityProvider     = identityProviderMock.Object;
            var validateServiceMock  = new Mock <IValidateService>();

            validateServiceMock
            .Setup(s => s.Validate(It.IsAny <StockOpnameWarehouseViewModel>()))
            .Verifiable();
            var validateService = validateServiceMock.Object;

            var controller = GetController(service, identityProvider, validateService);

            controller.ModelState.AddModelError("test", "test");

            //Act
            var response = await controller.Post(dataUtil);

            //Assert
            Assert.Equal((int)HttpStatusCode.BadRequest, GetStatusCode(response));
        }
        public async Task <IActionResult> Post([FromBody] StockOpnameWarehouseViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                var excpetion = new
                {
                    error = ResultFormatter.FormatErrorMessage(ModelState)
                };
                return(new BadRequestObjectResult(excpetion));
            }
            try
            {
                VerifyUser();
                ValidateService.Validate(viewModel);
                var result = await _service.Create(viewModel);

                return(Created("/", result));
            }
            catch (ServiceValidationException ex)
            {
                var Result = new
                {
                    error      = ResultFormatter.Fail(ex),
                    apiVersion = "1.0.0",
                    statusCode = HttpStatusCode.BadRequest,
                    message    = "Data does not pass validation"
                };

                return(new BadRequestObjectResult(Result));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public void Should_Have_Error_When_Validate_Default_Value()
        {
            StockOpnameWarehouseViewModel viewModel = new StockOpnameWarehouseViewModel();

            viewModel.WarehousesProductionOrders = new List <StockOpnameWarehouseProductionOrderViewModel>()
            {
                new StockOpnameWarehouseProductionOrderViewModel()
            };

            var result = viewModel.Validate(null);

            Assert.NotEmpty(result.ToList());
        }
        public void Should_Have_Error_When_Date_LesThan_Today()
        {
            StockOpnameWarehouseViewModel viewModel = new StockOpnameWarehouseViewModel()
            {
                Date = DateTimeOffset.Now.AddDays(-1)
            };

            viewModel.WarehousesProductionOrders = new List <StockOpnameWarehouseProductionOrderViewModel>()
            {
                new StockOpnameWarehouseProductionOrderViewModel()
            };

            var result = viewModel.Validate(null);

            Assert.NotEmpty(result.ToList());
        }
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] StockOpnameWarehouseViewModel viewModel)
        {
            VerifyUser();
            if (!ModelState.IsValid)
            {
                var exception = new
                {
                    error = ResultFormatter.FormatErrorMessage(ModelState)
                };
                return(new BadRequestObjectResult(exception));
            }

            try
            {
                VerifyUser();
                ValidateService.Validate(viewModel);
                await _service.Update(id, viewModel);

                return(NoContent());
            }
            catch (ServiceValidationException ex)
            {
                var Result = new
                {
                    error      = ResultFormatter.Fail(ex),
                    apiVersion = "1.0.0",
                    statusCode = HttpStatusCode.BadRequest,
                    message    = "Data does not pass validation"
                };

                return(new BadRequestObjectResult(Result));
            }
            catch (Exception ex)
            {
                var error = new
                {
                    statusCode = HttpStatusCode.InternalServerError,
                    error      = ex.Message
                };
                return(StatusCode((int)HttpStatusCode.InternalServerError, error));
            }
        }