public void SeConsultarUmClienteInexistentePorCodigoDeveRetornarNulo()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();

            var Cliente = consultador.ConsultarCliente(99);

            Cliente
            .Should().BeNull();
        }
        public void SeConsultarTodosOsClientesDeveEncontrarApenasOsRegistrosConfiguradosNaFactory()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();

            consultador.ConsultarTodosOsClientes()
            .Should()
            .HaveCount(3);

            factory.Repositorio.Quantidade
            .Should().Be(0);
        }
        public void SeNaoExistirUmClienteCadastradoDeveRetornarFalso()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();

            var cliente = new Cliente()
            {
                Nome = "Francisco dos Santos"
            };

            consultador.ExisteClienteCadastrado(cliente)
            .Should()
            .BeFalse();
        }
        public void SeExistirUmClienteCadastroDeveRetornarVerdadeiro()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();

            var cliente = new Cliente()
            {
                Nome = "João Abc da Silva"
            };

            consultador.ExisteClienteCadastrado(cliente)
            .Should()
            .BeTrue();
        }
        public void SeCadastrarUmClienteExistenteDeveGerarErro()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();
            var manutencao  = factory.CriarManutencao();

            var Cliente = new Cliente()
            {
                Nome = "João Abc da Silva"
            };

            Action cadastro = () => manutencao.Cadastrar(Cliente);

            cadastro
            .ShouldThrow <Exception>()
            .WithMessage("Já existe um Cliente cadastrado com este nome!");
        }
        public void SeExcluirUmClienteExistenteDeveEntrarNaListaDeAtualizacao()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();
            var manutencao  = factory.CriarManutencao();

            factory.Repositorio.Quantidade
            .Should().Be(0);

            var Cliente = consultador.ConsultarCliente(1);

            Cliente
            .Should().NotBeNull();

            manutencao.Excluir(Cliente);

            factory.Repositorio.Quantidade
            .Should().Be(0);
        }
        public void SeConsultarClienteExistenteCarregandoOsFilhosPorCodigoDeveEncontrar()
        {
            var factory     = new ClienteFactory();
            var consultador = factory.CriarConsultador();

            var cliente = consultador.ConsultarClienteComFilhosEContatos(1);

            cliente
            .Should().NotBeNull();

            cliente.Nome
            .Should().Be("João Abc da Silva");

            cliente.Filhos
            .Should()
            .HaveCount(2);

            cliente.Contatos
            .Should()
            .HaveCount(1);
        }