public async Task <ActionResult <Product> > PostProduct([FromBody] ProductCreatRequest product)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var validator = new ProductCreateRequestValidator();

            if (!validator.IsValid(product))
            {
                return(BadRequest(new { error = "Produto inválido!" }));
            }

            var prod           = product.ConvertContractToProduct();
            var modelValidator = new ProductCreateValidator(_context, prod);
            //atribui a variavel erros a lista de erros encontrados
            var errors = modelValidator.IsValid();

            // verificando se existe algum erro na lista errors
            if (errors.Count() > 0)
            {
                return(BadRequest(new { error = errors }));
            }

            if (!modelValidator.ExistingProduct())
            {
                return(BadRequest(new { error = "ERRO! Produto existente." }));
            }

            _context.Product.Add(prod);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetProduct", new { id = prod.Id }, prod));
        }
Example #2
0
        public void Validate_When_has_nested_object_errors_Then_those_errors_are_not_returned()
        {
            var validator = new ProductCreateRequestValidator();
            var request   = new ProductCreateRequest {
                Product = new  ProductCreateDto()
            };
            var validatorResult = validator.Validate(request);

            Assert.IsTrue(validatorResult.IsValid);
        }
Example #3
0
        public void Validate_When_product_is_null_Then_product_is_required()
        {
            var request = new ProductCreateRequest {
                Product = null
            };
            var productCreateRequestValidator = new ProductCreateRequestValidator();

            var validatorResult = productCreateRequestValidator.Validate(request);

            Assert.IsFalse(validatorResult.IsValid);
            var argErrors = validatorResult.ArgumentErrors;

            Assert.IsTrue(argErrors.Any(e => e.ArgumentName == "Product" && e.ArgumentError.ErrorCode == CommonArgumentErrorCode.Required && e.ArgumentError.ErrorMessage == "Required"));
        }
Example #4
0
 public ProductCreateRequestTest()
 {
     _validator = new ProductCreateRequestValidator();
 }