Exemplo n.º 1
0
        public async Task <int> Create(FornecedorRequestModel request)
        {
            var fornecedor = new FornecedorBuilder()
                             .ComRazaoSocial(request.RazaoSocial)
                             .ComNomeFantasia(request.NomeFantasia)
                             .ComTelefone(request.Telefone)
                             .ComEmail(request.Email)
                             .ComCNPJ(request.CNPJ)
                             .ComRua(request.Endereco.Rua)
                             .ComNumero(request.Endereco.Numero)
                             .ComComplemento(request.Endereco.Complemento)
                             .ComBairro(request.Endereco.Bairro)
                             .ComCEP(request.Endereco.CEP)
                             .ComCidade(request.Endereco.Cidade)
                             .ComUF(request.Endereco.UF)
                             .Build();

            fornecedor.Validate();
            var fornecedorJaExiste = await _repository.VerificarSeFornecedorJaExiste(fornecedor.CNPJ);

            if (fornecedorJaExiste)
            {
                throw new ArgumentException("Fornecedor já existe.");
            }
            await _repository.Create(fornecedor);

            return(fornecedor.Id);
        }
        public async Task Estourar_Excecao_FornecedorJaExiste_Create()
        {
            var fornecedorRequestModel = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Carmello Bogo",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },
                RazaoSocial  = "Casas Bahia",
                CNPJ         = "89.096.092/0001-69",
                NomeFantasia = "Casas Bahia a casa da familia",
                Telefone     = "47991085345",
                Email        = "*****@*****.**",
            };

            _fornecedorRepository.VerificarSeFornecedorJaExiste(fornecedorRequestModel.CNPJ).Returns(true);

            var ex = await Record.ExceptionAsync(() => _fornecedorServices.Create(fornecedorRequestModel));

            ex.Should().BeOfType <ArgumentException>();
            ex.Message.Should().Be("Fornecedor já existe.");
        }
        public async Task Salvar_Fornecedor_Create()
        {
            FornecedorRequestModel fornecedorRequestModel = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Carmello Bogo",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },
                RazaoSocial  = "Barbara Cosmeticos",
                CNPJ         = "89.096.092/0001-69",
                NomeFantasia = "Barbara Comesticos LTDa",
                Telefone     = "47991085345",
                Email        = "*****@*****.**",
            };

            await _fornecedorServices.Create(fornecedorRequestModel);

            await _fornecedorRepository.Received(1).Create(Arg.Any <FornecedorEntity>());
        }
        public async Task Estourar_Excecao_GetByID()
        {
            var fornecedorID = 1;

            var fornecedorRequestModel = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Carmello Bogo",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },
                RazaoSocial  = "Casas Bahia",
                CNPJ         = "89.096.092/0001-69",
                NomeFantasia = "Casas Bahia a casa da familia",
                Telefone     = "47991085345",
                Email        = "*****@*****.**",
            };

            var ex = await Record.ExceptionAsync(() => _fornecedorServices.GetById(fornecedorID));

            ex.Should().BeOfType <ArgumentException>();
            ex.Message.Should().Be("Id do fornecedor inexistente.");
        }
        public async Task Atualizar_Fornecedor_Update()
        {
            var fornecedorId = 1;

            var model = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Carmello Bogo",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },
                RazaoSocial  = "Casas Bahia",
                CNPJ         = "89.096.092/0001-69",
                NomeFantasia = "Casas Bahia a casa da familia",
                Telefone     = "47991085345",
                Email        = "*****@*****.**",
            };

            var fornecedor = new FornecedorBuilderTest()
                             .ComRazaoSocial("barbara Cosmeticos")
                             .ComCNPJ("97.598.988/0001-74")
                             .ComNomeFantasia("Claudio")
                             .ComBairro("Ponta Aguda")
                             .ComCidade("Blumenau")
                             .ComRua("rua Paraguay")
                             .ComNumero("270")
                             .ComComplemento("Apto 502")
                             .ComUF("SC")
                             .ComCEP("89050020")
                             .ComEmail("*****@*****.**")
                             .ComTelefone("433222335")
                             .ComId(fornecedorId)
                             .Build();

            _fornecedorRepository.GetById(fornecedorId).Returns(fornecedor);
            _fornecedorRepository.ExisteFornecedorComEsseCnpj(fornecedor.CNPJ, fornecedorId).Returns(false);
            var fornecedorRetornado = await _fornecedorServices.Update(fornecedorId, model);

            await _fornecedorRepository.Received(1).Update(Arg.Is <FornecedorEntity>(args =>
                                                                                     args.RazaoSocial == model.RazaoSocial &&
                                                                                     args.CNPJ == model.CNPJ &&
                                                                                     args.NomeFantasia == model.NomeFantasia &&
                                                                                     args.Endereco.Rua == model.Endereco.Rua &&
                                                                                     args.Endereco.Bairro == model.Endereco.Bairro &&
                                                                                     args.Endereco.Cidade == model.Endereco.Cidade &&
                                                                                     args.Endereco.Numero == model.Endereco.Numero &&
                                                                                     args.Endereco.Complemento == model.Endereco.Complemento &&
                                                                                     args.Endereco.UF == model.Endereco.UF &&
                                                                                     args.Endereco.CEP == model.Endereco.CEP &&
                                                                                     args.Telefone == model.Telefone &&
                                                                                     args.Email == model.Email));
        }
        public async Task Estourar_Excecao_CnpjJaExiste_Update()
        {
            var fornecedorId           = 1;
            var fornecedorRequestModel = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Carmello Bogo",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },

                RazaoSocial  = "Casas Bahia",
                CNPJ         = "89.096.092/0001-69",
                NomeFantasia = "Casas Bahia a casa da familia",
                Telefone     = "47991085345",
                Email        = "*****@*****.**",
            };

            var fornecedor = new FornecedorBuilderTest()
                             .ComRazaoSocial("barbara Cosmeticos")
                             .ComCNPJ("97.598.988/0001-74")
                             .ComNomeFantasia("Claudio")
                             .ComBairro("Ponta Aguda")
                             .ComCidade("Blumenau")
                             .ComRua("rua Paraguay")
                             .ComNumero("270")
                             .ComComplemento("Apto 502")
                             .ComUF("SC")
                             .ComCEP("89050020")
                             .ComEmail("*****@*****.**")
                             .ComTelefone("433222335")
                             .ComId(fornecedorId)
                             .Build();

            _fornecedorRepository.GetById(fornecedorId).Returns(fornecedor);
            _fornecedorRepository.ExisteFornecedorComEsseCnpj(fornecedorRequestModel.CNPJ, fornecedorId).Returns(true);

            var ex = await Record.ExceptionAsync(() => _fornecedorServices.Update(fornecedorId, fornecedorRequestModel));

            ex.Should().BeOfType <ArgumentException>();
            ex.Message.Should().Be("Fornecedor não poderá ser cadastrado.");
        }
Exemplo n.º 7
0
        public async Task <IActionResult> Update([FromRoute] int id, [FromBody] FornecedorRequestModel model)
        {
            try
            {
                await _fornecedorService.Update(id, model);

                return(Ok("Fornecedor Atualizado com sucesso."));
            }
            catch (FornecedorException ex)
            {
                return(BadRequest(ex.Errors));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Exemplo n.º 8
0
        public void Validar_NomeFantasia_Caracteres(int?qtdCaracteres)
        {
            string nomeFantasia = "";

            if (qtdCaracteres != null)
            {
                nomeFantasia = new string('a', Convert.ToInt32(qtdCaracteres));
            }

            var fornecedor = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Rua Paraguay",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },

                RazaoSocial  = "Barbara Comesticos",
                NomeFantasia = nomeFantasia,
                CNPJ         = "74.358.222/0001-17",
                Telefone     = "47991085945",
                Email        = "*****@*****.**",
            };

            var ex = Assert.ThrowsAsync <ValidationException>(async() => await _fornecedorService.Create(fornecedor));

            if (qtdCaracteres == null)
            {
                ex.Result.Message.Should().Contain("Nome Fantasia não pode estar vazio.");
            }
            else if (qtdCaracteres == 51)
            {
                ex.Result.Message.Should().Contain("Nome Fantasia não pode conter mais de 50 caracteres.");
            }
            else if (qtdCaracteres == 9)
            {
                ex.Result.Message.Should().Contain("Nome Fantasia deve conter mais de 10 caracteres.");
            }
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Create([FromBody] FornecedorRequestModel fornecedorRequest)
        {
            try
            {
                int id = await _fornecedorService.Create(fornecedorRequest);

                return(CreatedAtRoute(fornecedorRequest, id));
            }
            catch (FornecedorException ex)
            {
                return(BadRequest(ex.Errors));
            }
            catch (DbUpdateException ex)
            {
                return(StatusCode(500, ex.Message));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Exemplo n.º 10
0
        public void Validar_Email_Caracteres(string emailTeste)
        {
            string email = "";

            if (emailTeste != "x")
            {
                email = emailTeste;
            }

            var fornecedor = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Rua Paraguay",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },

                RazaoSocial  = "Barbara Comesticos",
                NomeFantasia = "Barbaras Comesticos e Batom",
                CNPJ         = "74.358.222/0001-17",
                Telefone     = "47991085945",
                Email        = email,
            };

            var ex = Assert.ThrowsAsync <ValidationException>(async() => await _fornecedorService.Create(fornecedor));

            if (emailTeste == "x")
            {
                ex.Result.Message.Should().Contain("Email não pode ser vazio.");
            }
            else if (emailTeste == "mabelksouza.com")
            {
                ex.Result.Message.Should().Contain("Email incorreto. EX:[email protected].");
            }
        }
Exemplo n.º 11
0
        public void Validar_CNPJ_Caracteres(string cnpjTeste)
        {
            var cnpj = "";

            if (cnpjTeste != "x")
            {
                cnpj = cnpjTeste;
            }

            var fornecedor = new FornecedorRequestModel()
            {
                Endereco = new EnderecoTests()
                {
                    Rua         = "Rua Paraguay",
                    Cidade      = "Blumenau",
                    Bairro      = "Ponta Aguda",
                    CEP         = "89050020",
                    Numero      = "270",
                    Complemento = "502",
                    UF          = "SC",
                },

                RazaoSocial  = "Barbara Comesticos",
                NomeFantasia = "Barbaras Comesticos e Batom",
                CNPJ         = cnpj,
                Telefone     = "47991085945",
                Email        = "*****@*****.**",
            };

            var ex = Assert.ThrowsAsync <ValidationException>(async() => await _fornecedorService.Create(fornecedor));

            if (cnpjTeste == "x")
            {
                ex.Result.Message.Should().Contain("Cnpj não pode estar vazio.");
            }
            else if (cnpjTeste == "00000/0001-17")
            {
                ex.Result.Message.Should().Contain("Cnpj incorreto.");
            }
        }
Exemplo n.º 12
0
        public async Task <FornecedorEntity> Update(int id, FornecedorRequestModel request)
        {
            var fornecedor = await _repository.GetById(id);

            if (fornecedor == null)
            {
                throw new ArgumentException("Id invalido.");
            }

            var fornecedorRequestModel = new FornecedorBuilder()
                                         .ComRazaoSocial(request.RazaoSocial)
                                         .ComNomeFantasia(request.NomeFantasia)
                                         .ComTelefone(request.Telefone)
                                         .ComEmail(request.Email)
                                         .ComCNPJ(request.CNPJ)
                                         .ComRua(request.Endereco.Rua)
                                         .ComNumero(request.Endereco.Numero)
                                         .ComComplemento(request.Endereco.Complemento)
                                         .ComBairro(request.Endereco.Bairro)
                                         .ComCEP(request.Endereco.CEP)
                                         .ComCidade(request.Endereco.Cidade)
                                         .ComUF(request.Endereco.UF);

            fornecedor.Update(fornecedorRequestModel);
            fornecedor.Validate();

            var verificandoCnpj = await _repository.ExisteFornecedorComEsseCnpj(fornecedor.CNPJ, fornecedor.Id);

            if (verificandoCnpj)
            {
                throw new ArgumentException("Fornecedor não poderá ser cadastrado.");
            }
            await _repository.Update(fornecedor);

            return(fornecedor);
        }