コード例 #1
0
        public async Task <ActionResult> Post([FromBody] ProductDtoCreate product)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido"));
            }

            if (product.qtde_estoque < 0 || product.valor_unitario < 0)
            {
                return(StatusCode((int)HttpStatusCode.PreconditionFailed, "Os valores informados não são válidos"));
            }
            try
            {
                var result = await _service.Post(product);

                if (result != null)
                {
                    return(StatusCode((int)HttpStatusCode.OK, "Produto Cadastrado"));
                }
                else
                {
                    return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido"));
                }
            }
            catch (ArgumentException)
            {
                return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido"));
            }
        }
コード例 #2
0
        public async Task <ActionResult> Store([FromBody] ProductDtoCreate product)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var result = await _service.Post(product);

                if (result != null)
                {
                    return(Created(new Uri(Url.Link("GetById", new { id = result.Id })), result));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception e)
            {
                var errorCode = (int)HttpStatusCode.InternalServerError;
                var msg       = e.Message;

                if (msg.StartsWith("BadRequest:"))
                {
                    errorCode = (int)HttpStatusCode.BadRequest;
                    msg       = msg.Split(": ")[1];
                }

                return(StatusCode(errorCode, new { error = msg }));
            }
        }
コード例 #3
0
        public ProductTestes()
        {
            idUsuario              = Guid.NewGuid();
            NomeProdutoAlterado    = Faker.Name.FullName();
            valor_unitarioAlterado = Faker.RandomNumber.Next(0, 100000);
            qtde_estoqueAlterado   = Faker.RandomNumber.Next(0, 1000000);

            for (int i = 0; i < 10; i++)
            {
                var dto = new ProductDto()
                {
                    Id             = Guid.NewGuid(),
                    nome           = Faker.Name.FullName(),
                    valor_unitario = Faker.RandomNumber.Next(0, 100000),
                    qtde_estoque   = Faker.RandomNumber.Next(0, 100000)
                };
                listaProductDto.Add(dto);
            }

            ProductDto = new ProductDto()
            {
                Id             = idUsuario,
                nome           = NomeProduto,
                valor_unitario = valor_unitarioProduto,
                qtde_estoque   = qtde_estoqueProduto,
                DataUltCompra  = DateTime.UtcNow,
                ValorUltVenda  = Faker.RandomNumber.Next(0, 100000)
            };

            ProductDtoCreate = new ProductDtoCreate()
            {
                nome           = NomeProduto,
                valor_unitario = valor_unitarioProduto,
                qtde_estoque   = qtde_estoqueProduto
            };

            ProductDtoCreateResult = new ProductDtoCreateResult()
            {
                Id             = idUsuario,
                nome           = NomeProduto,
                valor_unitario = valor_unitarioProduto,
                qtde_estoque   = qtde_estoqueProduto,
            };

            ProductDtoUpdate = new ProductDtoUpdate()
            {
                Id             = idUsuario,
                nome           = NomeProdutoAlterado,
                valor_unitario = valor_unitarioAlterado,
                qtde_estoque   = qtde_estoqueAlterado
            };

            ProductDtoUpdateResult = new ProductDtoUpdateResult()
            {
                Id             = idUsuario,
                nome           = NomeProdutoAlterado,
                valor_unitario = valor_unitarioAlterado,
                qtde_estoque   = qtde_estoqueAlterado
            };
        }
コード例 #4
0
        public async Task <ProductDtoCreateResult> Post(ProductDtoCreate product)
        {
            var model  = _mapper.Map <ProductModel>(product);
            var entity = _mapper.Map <ProductEntity>(model);
            var result = await _productrepository.InsertAsync(entity);

            return(_mapper.Map <ProductDtoCreateResult>(result));
        }
コード例 #5
0
        public async Task <ActionResult <Product> > PostProduct([FromBody] ProductDtoCreate product)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var result = await _service.Post(product);

                if (result != null)
                {
                    return(CreatedAtAction("GetProduct", new { id = result.Id }, product));
                }

                return(BadRequest());
            }
            catch (ArgumentException ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex));
            }
        }
コード例 #6
0
        public async Task E_Possivel_Realizar_Cotroller_BadRequest()
        {
            var serviceMock    = new Mock <IProductService>();
            var Nome           = Faker.Name.FullName();
            var Valor_Unitario = Faker.RandomNumber.Next(0, 10000);
            var qtde_Estoque   = Faker.RandomNumber.Next(0, 10000);

            serviceMock.Setup(m => m.Post(It.IsAny <ProductDtoCreate>())).ReturnsAsync(
                new ProductDtoCreateResult
            {
                Id             = Guid.NewGuid(),
                nome           = Nome,
                valor_unitario = Valor_Unitario,
                qtde_estoque   = qtde_Estoque
            }
                );

            _controller = new ProductsController(serviceMock.Object);
            _controller.ModelState.AddModelError("Name", "É um campo obrigatório");
            Mock <IUrlHelper> url = new Mock <IUrlHelper>();

            url.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns("http://localhost:5000");
            _controller.Url = url.Object;
            var ProductDtoCreate = new ProductDtoCreate
            {
                nome           = Nome,
                valor_unitario = Valor_Unitario,
                qtde_estoque   = qtde_Estoque
            };

            var result = await _controller.Post(ProductDtoCreate);

            ObjectResult resultValue = Assert.IsType <ObjectResult>(result);

            Assert.Equal(400, resultValue.StatusCode);
            Assert.Equal("Ocorreu um erro Desconhecido", resultValue.Value);
        }
コード例 #7
0
        public async Task <ProductDtoCreateResult> Post(ProductDtoCreate product)
        {
            var model  = _mapper.Map <ProductModel>(product);
            var entity = _mapper.Map <ProductEntity>(model);

            var idExist = await _repository.ExistAsync(entity.Id);

            if (idExist)
            {
                entity.Id = Guid.NewGuid();
            }

            //Verifica se o nome existe em outro produto
            var nameExist = await _repository.FindByName(product.Name);

            if (nameExist != null)
            {
                throw new Exception("BadRequest: Nome já utilizado em outro produto");
            }

            var result = await _repository.InsertAsync(entity);

            return(_mapper.Map <ProductDtoCreateResult>(result));
        }
コード例 #8
0
        public async Task E_Possivel_Realizar_Cotroller_OutRange()
        {
            var serviceMock    = new Mock <IProductService>();
            var Nome           = Faker.Name.FullName();
            var Valor_Unitario = Faker.RandomNumber.Next(-10, 0);
            var qtde_Estoque   = Faker.RandomNumber.Next(-10, 0);

            serviceMock.Setup(m => m.Post(It.IsAny <ProductDtoCreate>())).ReturnsAsync(
                new ProductDtoCreateResult
            {
                Id             = Guid.NewGuid(),
                nome           = Nome,
                valor_unitario = Valor_Unitario,
                qtde_estoque   = qtde_Estoque
            }
                );

            _controller = new ProductsController(serviceMock.Object);
            Mock <IUrlHelper> url = new Mock <IUrlHelper>();

            url.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns("http://localhost:5000");
            _controller.Url = url.Object;
            var ProductDtoCreate = new ProductDtoCreate
            {
                nome           = Nome,
                valor_unitario = Valor_Unitario,
                qtde_estoque   = qtde_Estoque
            };

            var result = await _controller.Post(ProductDtoCreate);

            ObjectResult resultValue = Assert.IsType <ObjectResult>(result);

            Assert.Equal(412, resultValue.StatusCode);
            Assert.Equal("Os valores informados não são válidos", resultValue.Value);
        }
コード例 #9
0
        public async Task <Product> Post(ProductDtoCreate product)
        {
            var entity = _mapper.Map <Product>(product);

            return(await _repository.InsertAsync(entity));
        }