public void Possuir_Dados_Fornecedor()
        {
            var IdFornecedor = 10;
            var fornecedor   = new FornecedorBuilderTest()
                               .ComCNPJ("08.632.688/0001-34")
                               .ComEmail("*****@*****.**")
                               .ComRua("Rua Paraguay")
                               .ComBairro("Ponta Aguda")
                               .ComCidade("Blumenau")
                               .ComNumero("270")
                               .ComUF("SC")
                               .ComComplemento("502")
                               .ComCEP("89050020")
                               .ComId(IdFornecedor)
                               .ComNomeFantasia("Barbaras Comesticos e Batom")
                               .ComRazaoSocial("Barbara Comesticos")
                               .ComTelefone("47991085945")
                               .Build();

            fornecedor.CNPJ.Should().Be("08.632.688/0001-34");
            fornecedor.Email.Should().Be("*****@*****.**");
            fornecedor.Telefone.Should().Be("47991085945");
            fornecedor.Endereco.Bairro.Should().Be("Ponta Aguda");
            fornecedor.Endereco.Rua.Should().Be("Rua Paraguay");
            fornecedor.Endereco.Cidade.Should().Be("Blumenau");
            fornecedor.Endereco.Numero.Should().Be("270");
            fornecedor.Endereco.UF.Should().Be("SC");
            fornecedor.Endereco.Complemento.Should().Be("502");
            fornecedor.Endereco.CEP.Should().Be("89050020");
            fornecedor.NomeFantasia.Should().Be("Barbaras Comesticos e Batom");
            fornecedor.Id.Should().Be(IdFornecedor);
            fornecedor.RazaoSocial.Should().Be("Barbara Comesticos");
        }
        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.");
        }
        public void Deletar_Fornecedor()
        {
            var fornecedorId = 1;
            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();

            fornecedor.Delete();
            fornecedor.Deletado.Should().BeTrue();
        }
        public async Task Pegar_Fornecedor_GetByID()
        {
            var fornecedorId = 1;
            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);
            var fornecedorRetornado = await _fornecedorServices.GetById(fornecedorId);

            fornecedorRetornado.Should().NotBeNull();

            fornecedorRetornado.RazaoSocial.Should().Be(fornecedor.RazaoSocial);
            fornecedorRetornado.CNPJ.Should().Be(fornecedor.CNPJ);
            fornecedorRetornado.NomeFantasia.Should().Be(fornecedor.NomeFantasia);
            fornecedorRetornado.Endereco.Rua.Should().Be(fornecedor.Endereco.Rua);
            fornecedorRetornado.Endereco.Bairro.Should().Be(fornecedor.Endereco.Bairro);
            fornecedorRetornado.Endereco.Cidade.Should().Be(fornecedor.Endereco.Cidade);
            fornecedorRetornado.Endereco.Numero.Should().Be(fornecedor.Endereco.Numero);
            fornecedorRetornado.Endereco.Complemento.Should().Be(fornecedor.Endereco.Complemento);
            fornecedorRetornado.Endereco.UF.Should().Be(fornecedor.Endereco.UF);
            fornecedorRetornado.Endereco.CEP.Should().Be(fornecedor.Endereco.CEP);
            fornecedorRetornado.Telefone.Should().Be(fornecedor.Telefone);
            fornecedorRetornado.Email.Should().Be(fornecedor.Email);
            fornecedorRetornado.Id.Should().Be(fornecedorId);
        }
        public async Task Deletar_Fornecedor_Delete()
        {
            var fornecedorId = 1;
            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")
                               .ComEmail("*****@*****.**")
                               .ComComplemento("Apto 502")
                               .ComCEP("89037656")
                               .ComUF("SC")
                               .ComTelefone("433222335")
                               .ComId(fornecedorId)
                               .Build();

            _fornecedorRepository.GetById(fornecedorId).Returns(fornecedor);
            await _fornecedorServices.Delete(fornecedorId);

            await _fornecedorRepository.Received(1).Delete(Arg.Any <FornecedorEntity>());
        }