예제 #1
0
        public void NaoDeveAdicionarProdutoEmUmaVendaQuandoVendaNaoExiste()
        {
            var clienteExpected = ClienteBuilder.NewInstance().WithId(CLIENTE_ID_EXISTS).Build();

            var produtoExpectedOne = ProdutoBuilder
                                     .NewInstance()
                                     .WithId(PRODUTO_ID_EXISTS_ONE)
                                     .WithPrecoVenda(10)
                                     .Build();
            var produtoExpectedTwo = ProdutoBuilder
                                     .NewInstance()
                                     .WithId(PRODUTO_ID_EXISTS_TWO)
                                     .WithPrecoVenda(5)
                                     .Build();

            vendaRepositoryMock
            .Setup(r => r.Salvar(It.IsAny <Venda>()))
            .Callback <Venda>(v =>
            {
                v.Id = 2;
            });

            var venda     = vendaService.Iniciar(clienteExpected, produtoExpectedOne, 1);
            var exception = Assert.Throws <DomainException>(() => vendaService.AdicionarProduto(venda, produtoExpectedTwo, 1));

            Assert.Equal($"Venda {venda.Id} não existe.", exception.Message);
        }
        public void Dado_uma_Proposta_com_matricula_igual_do_conjuge_deve_Adicionar_dados_do_conjuge()
        {
            _proposta = PropostaBuilder.UmaProposta()
                        .Padrao()
                        .Com(DadosPagamentoBuilder.UmPagamento())
                        .Com(ProponenteBuider.UmProponente().Padrao()
                             .Com(PessoaBuilder.UmaPessoa().ComMatricula(IdentificadoresPadrao.Matricula)))
                        .Com(ProdutoBuilder.UmProduto()
                             .ComMatricula(IdentificadoresPadrao.Matricula)
                             .ComInscricao(IdentificadoresPadrao.InscricaoId)
                             .Com(BeneficiarioBuilder.UmBeneficiario())
                             .Com(CoberturaBuilder.UmaCobertura()
                                  .ComItemCertificadoApolice(IdentificadoresPadrao.ItemCertificadoApoliceId)
                                  .ComItemProdutoId(IdentificadoresPadrao.ItemProdutoId)
                                  .ComInicioVigencia(IdentificadoresPadrao.DataInicioVigencia)
                                  .Com(ContratacaoBuilder.UmaContratacao()
                                       .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                       .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                                  )
                             ).Build();

            var eventoImplantacao = _proposta.ToEvento();

            var coberturaContratada = eventoImplantacao.Coberturas.First();

            Assert.AreEqual(_proposta.Proponente.Conjuge.Matricula, coberturaContratada.Matricula);
        }
 private void CriarProposta(ImplantacaoParam param, long itemCertificadoApolice)
 {
     _proposta = PropostaBuilder.UmaProposta().Padrao().Padrao()
                 .ComIdentificador(_param.Identificador)
                 .ComDataAssinatura(_param.DataInicioVigencia.AddMonths(6))
                 .Com(DadosPagamentoBuilder.UmPagamento()
                      .ComPeriodicidade(ObterPeriodicidade(_param.Periodicidade)))
                 .Com(ProponenteBuider.UmProponente().Padrao()
                      .ComDataNascimento(_param.DataNascimento)
                      .ComMatricula(_param.Matricula)
                      .ComSexo(_param.Sexo))
                 .Com(ProdutoBuilder.UmProduto().Padrao()
                      .ComMatricula(IdentificadoresPadrao.Matricula)
                      .ComCodigo(IdentificadoresPadrao.ProdutoId)
                      .ComInscricao(_param.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario().Padrao())
                      .Com(CoberturaBuilder.UmaCobertura().Padrao()
                           .ComInicioVigencia(_param.DataInicioVigencia.AddYears(-1))
                           .ComItemCertificadoApolice(_param.IdExterno)
                           .ComItemProdutoId(_param.ItemProdutoId)
                           .ComInicioVigencia(_param.DataInicioVigencia)
                           .ComClasseRisco(_param.ClasseRiscoId)
                           .Com(ContratacaoBuilder.UmaContratacao().Padrao()
                                .ComTipoRenda(ObterTipoRenda(_param.TipoRendaId))
                                .ComTipoFormaContratacao(ObterTipoFormaContratacao(_param.TipoFormaContratacaoId))
                                ))).Build();
 }
예제 #4
0
        public void DeveAdicionarProdutoEmUmaVendaExistente()
        {
            var clienteExpected = ClienteBuilder.NewInstance().WithId(CLIENTE_ID_EXISTS).Build();

            var produtoExpectedOne = ProdutoBuilder
                                     .NewInstance()
                                     .WithId(PRODUTO_ID_EXISTS_ONE)
                                     .WithPrecoVenda(10)
                                     .Build();
            var produtoExpectedTwo = ProdutoBuilder
                                     .NewInstance()
                                     .WithId(PRODUTO_ID_EXISTS_TWO)
                                     .WithPrecoVenda(5)
                                     .Build();

            var vendaExpected = new Venda(clienteExpected);

            vendaExpected.Id = VENDA_ID_EXISTS;
            vendaExpected.AddProduto(produtoExpectedOne, 1);
            vendaExpected.AddProduto(produtoExpectedTwo, 1);

            vendaRepositoryMock
            .Setup(r => r.Salvar(It.IsAny <Venda>()))
            .Callback <Venda>(v =>
            {
                v.Id = VENDA_ID_EXISTS;
            });

            var venda = vendaService.Iniciar(clienteExpected, produtoExpectedOne, 1);

            venda = vendaService.AdicionarProduto(venda, produtoExpectedTwo, 1);

            vendaExpected.ToExpectedObject().ShouldEqual(venda);
        }
예제 #5
0
        public void Insert(ProdutoViewModel produto)
        {
            var prod = new ProdutoBuilder(produto.Nome, produto.PrecoCusto, produto.PrecoVenda, produto.Marca)
                       .AddDefaultInsert()
                       .Build();

            new CommandInsertProduto(prod, _repository).Execute();
        }
예제 #6
0
        private static PedidoDeVenda GetPedido()
        {
            var cliente = new ClienteBuilder()
                          .WithNome("Cepo")
                          .WithCodigo(1)
                          .Build();

            var produto1 = new ProdutoBuilder()
                           .WithCancelado(false)
                           .WithNome("Abacate")
                           .WithQuantidade(1.00m)
                           .WithValorUnitarioBruto(50.00m)
                           .WithCodigo(1)
                           .Build();

            var produto2 = new ProdutoBuilder()
                           .WithCancelado(false)
                           .WithNome("Abacaxi")
                           .WithQuantidade(4.00m)
                           .WithValorUnitarioBruto(60.00m)
                           .WithCodigo(9)
                           .Build();

            var produto3 = new ProdutoBuilder()
                           .WithCancelado(false)
                           .WithNome("Carambola")
                           .WithQuantidade(10.00m)
                           .WithValorUnitarioBruto(70.00m)
                           .WithCodigo(10)
                           .Build();

            var produto4 = new ProdutoBuilder()
                           .WithCancelado(false)
                           .WithNome("Bacon")
                           .WithQuantidade(20.00m)
                           .WithValorUnitarioBruto(99.00m)
                           .WithCodigo(3)
                           .Build();

            var produto5 = new ProdutoBuilder()
                           .WithCancelado(false)
                           .WithNome("Pão de batata")
                           .WithQuantidade(20.00m)
                           .WithValorUnitarioBruto(99.00m)
                           .WithCodigo(3)
                           .Build();

            var produtos = new List <Produto> {
                produto1, produto2, produto3, produto4, produto5
            };

            return(new PedidoDeVendaBuilder()
                   .WithCliente(cliente)
                   .WithItens(produtos)
                   .WithCodigo(1)
                   .Build());
        }
예제 #7
0
        public void Update(ProdutoViewModel produto)
        {
            var prod = new ProdutoBuilder(produto.Nome, produto.PrecoCusto, produto.PrecoVenda, produto.Marca)
                       .WithId(produto.Id)
                       .AddDefaultUpdate()
                       .Build();

            new CommandUpdateProduto(prod, _repository).Execute();
        }
예제 #8
0
        public void DeveAlterarNome()
        {
            var novoNomeEsperado = _faker.Name.Random.String();
            var produto          = ProdutoBuilder.Novo().Build();

            produto.AlterarNome(novoNomeEsperado);

            Assert.Equal(novoNomeEsperado, produto.Nome);
        }
예제 #9
0
        public void ObterBeneficiarioMaisNovo_quando_item_produto_contem_um_unico_beneficiario()
        {
            var _proposta = PropostaBuilder.UmaProposta()
                            .Com(ProdutoBuilder.UmProduto()
                                 .Com(BeneficiarioBuilder.UmBeneficiario())
                                 .ComCodigo(10))
                            .Build();

            var coberturaContratada = CoberturaContratadaBuilder.Uma().Build();
        }
예제 #10
0
        public void NaoDeveIniciarNovaVendaQuandoProdutoNaoExiste()
        {
            var clienteExpected = ClienteBuilder.NewInstance().WithId(CLIENTE_ID_EXISTS).Build();
            var produtoExpected = ProdutoBuilder
                                  .NewInstance()
                                  .Build();

            var exception = Assert.Throws <DomainException>(() => vendaService.Iniciar(clienteExpected, produtoExpected, 1));

            Assert.Equal($"Produto {produtoExpected.Descricao} não existe.", exception.Message);
        }
        public ProdutoModel Edit(ProdutoModel model)
        {
            var produto = new ProdutoBuilder()
                          .WithId(model.Id ?? Guid.Empty)
                          .WithNome(model.Nome)
                          .WithPrecoDeCusto(model.PrecoDeCusto)
                          .WithPrecoDeVenda(model.PrecoDeVenda)
                          .Build();

            _produtoRepository.Update(produto);
            return(_mapper.Map <ProdutoModel>(produto));
        }
예제 #12
0
        public void NaoDeveIniciarNovaVendaQuandoQuantidadeInvalida()
        {
            var clienteExpected = ClienteBuilder.NewInstance().WithId(CLIENTE_ID_EXISTS).Build();
            var produtoExpected = ProdutoBuilder
                                  .NewInstance()
                                  .WithId(PRODUTO_ID_EXISTS_ONE)
                                  .Build();

            var exception = Assert.Throws <DomainException>(() => vendaService.Iniciar(clienteExpected, produtoExpected, 0));

            Assert.Equal($"Quantidade inválida.", exception.Message);
        }
        public void CriarNovoProdutoComErro(string nome, decimal precoDeCusto,
                                            decimal precoDeVenda)
        {
            var produto = new ProdutoBuilder()
                          .WithId(Guid.NewGuid())
                          .WithNome(nome)
                          .WithPrecoDeCusto(precoDeCusto)
                          .WithPrecoDeVenda(precoDeVenda)
                          .Build();

            Assert.False(produto.IsValid);
        }
예제 #14
0
        public void DeveIniciarNovaVenda()
        {
            var clienteExpected = ClienteBuilder.NewInstance().WithId(CLIENTE_ID_EXISTS).Build();
            var produtoExpected = ProdutoBuilder.NewInstance().WithId(PRODUTO_ID_EXISTS_ONE).Build();

            var vendaExpected = new Venda(clienteExpected);

            vendaExpected.AddProduto(produtoExpected, 1);

            var venda = vendaService.Iniciar(clienteExpected, produtoExpected, 1);

            vendaExpected.ToExpectedObject().ShouldEqual(venda);
        }
        public async Task <ProdutoModel> EditAsync(ProdutoModel model, CancellationToken cancellationToken)
        {
            var produto = new ProdutoBuilder()
                          .WithId(model.Id ?? Guid.Empty)
                          .WithNome(model.Nome)
                          .WithPrecoDeCusto(model.PrecoDeCusto)
                          .WithPrecoDeVenda(model.PrecoDeVenda)
                          .Build();

            await _produtoRepository.UpdateAsync(produto, cancellationToken);

            return(_mapper.Map <ProdutoModel>(produto));
        }
예제 #16
0
        public ProdutoDomain CriarParaSalvar(ProdutoDto produtoDto)
        {
            var produto = new ProdutoBuilder()
                          .WithId(Guid.NewGuid())
                          .WithNome(produtoDto.Nome)
                          .WithFornecedor(produtoDto.Fornecedor)
                          .WithFornecedorId(produtoDto.FornecedorId)
                          .WithPreco(produtoDto.Preco)
                          .WithQuantidade(produtoDto.Quantidade)
                          .Build();

            return(produto);
        }
예제 #17
0
        public static List <Produto> GetProdutosParaTestes()
        {
            var produto1 = new ProdutoBuilder()
                           .WithNome("Produto teste 1")
                           .Build();

            var produto2 = new ProdutoBuilder()
                           .WithNome("Produto teste 2")
                           .Build();

            return(new List <Produto>()
            {
                produto1, produto2
            });
        }
        public void CriarNovoProdutoSemErro(string nome, decimal precoDeCusto,
                                            decimal precoDeVenda)
        {
            var produto = new ProdutoBuilder()
                          .WithId(Guid.NewGuid())
                          .WithNome(nome)
                          .WithPrecoDeCusto(precoDeCusto)
                          .WithPrecoDeVenda(precoDeVenda)
                          .Build();

            Assert.True(produto.IsValid);
            Assert.Equal(nome, produto.Nome);
            Assert.Equal(precoDeCusto, produto.PrecoDeCusto);
            Assert.Equal(precoDeVenda, produto.PrecoDeVenda);
        }
예제 #19
0
        public Produto(ProdutoBuilder produto)
        {
            if (produto.Id > 0)
            {
                Id = produto.Id;
            }

            Nome          = SetNome(produto.Nome);
            PrecoCusto    = SetPrecoCusto(produto.PrecoCusto);
            PrecoVenda    = SetPrecoVenda(produto.PrecoVenda);
            Marca         = SetMarca(produto.Marca);
            DataInclusao  = SetDataInclusao(produto.DataInclusao);
            DataAlteracao = SetDataAlteracao(produto.DataAlteracao);
            CodigoUsuario = SetCodigoUsuario(produto.CodigoUsuario);
        }
예제 #20
0
        public void DeveIniciarNovaVendaAdicionandoProdutoComDescontoClienteOuro()
        {
            var clienteExpected = ClienteBuilder
                                  .NewInstance()
                                  .WithId(CLIENTE_ID_EXISTS)
                                  .WithTipo(ClienteTipo.Ouro)
                                  .Build();
            var produtoExpected = ProdutoBuilder
                                  .NewInstance()
                                  .WithId(PRODUTO_ID_EXISTS_ONE)
                                  .WithPrecoVenda(10)
                                  .Build();

            var venda = vendaService.Iniciar(clienteExpected, produtoExpected, 1);

            Assert.Equal(8, venda.Detalhes.FirstOrDefault().PrecoVendido);
        }
예제 #21
0
 private void ObterProposta()
 {
     _proposta = PropostaBuilder.UmaProposta()
                 .Padrao()
                 .Com(DadosPagamentoBuilder.UmPagamento())
                 .Com(ProponenteBuider.UmProponente().Padrao())
                 .Com(ProdutoBuilder.UmProduto()
                      .ComInscricao(IdentificadoresPadrao.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario().Padrao())
                      .Com(CoberturaBuilder.UmaCobertura().Padrao()
                           .Com(PrazosBuilder.Um().Padrao())
                           .Com(ContratacaoBuilder.UmaContratacao()
                                .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                           )
                      ).Build();
 }
        public ProdutoModel Save(ProdutoModel model)
        {
            var produto = new ProdutoBuilder()
                          .WithId(Guid.NewGuid())
                          .WithNome(model.Nome)
                          .WithPrecoDeCusto(model.PrecoDeCusto)
                          .WithPrecoDeVenda(model.PrecoDeVenda)
                          .Build();

            if (!produto.IsValid)
            {
                return(_mapper.Map <ProdutoModel>(produto));
            }

            _produtoRepository.Insert(produto);

            return(_mapper.Map <ProdutoModel>(produto));
        }
        public async Task <ProdutoModel> SaveAsync(ProdutoModel model, CancellationToken cancellationToken)
        {
            var produto = new ProdutoBuilder()
                          .WithId(Guid.NewGuid())
                          .WithNome(model.Nome)
                          .WithPrecoDeCusto(model.PrecoDeCusto)
                          .WithPrecoDeVenda(model.PrecoDeVenda)
                          .Build();

            if (!produto.IsValid)
            {
                return(_mapper.Map <ProdutoModel>(produto));
            }

            await _produtoRepository.InsertAsync(produto, cancellationToken);

            return(_mapper.Map <ProdutoModel>(produto));
        }
 private void ObterProposta()
 {
     _proposta = PropostaBuilder.UmaProposta()
                 .Padrao()
                 .Com(DadosPagamentoBuilder.UmPagamento())
                 .Com(ProponenteBuider.UmProponente().ComMatricula(20)
                      .Com(PessoaBuilder.UmaPessoa().ComMatricula(IdentificadoresPadrao.Matricula)))
                 .Com(ProdutoBuilder.UmProduto()
                      .ComMatricula(IdentificadoresPadrao.Matricula)
                      .ComInscricao(IdentificadoresPadrao.InscricaoId)
                      .Com(BeneficiarioBuilder.UmBeneficiario())
                      .Com(CoberturaBuilder.UmaCobertura()
                           .ComItemCertificadoApolice(IdentificadoresPadrao.ItemCertificadoApoliceId)
                           .ComItemProdutoId(IdentificadoresPadrao.ItemProdutoId)
                           .Com(ContratacaoBuilder.UmaContratacao()
                                .ComTipoFormaContratacao(TipoFormaContratacaoEnum.RendaMensal)
                                .ComTipoRenda(TipoDeRendaEnum.NaoSeAplica))
                           )
                      ).Build();
 }
예제 #25
0
        public ProdutoDomain CriarParaAlterar(ProdutoDto produtoDto)
        {
            var _produto = Context.Produtos.FirstOrDefault(x => x.Id == produtoDto.Id);

            if (_produto == null)
            {
                throw new ArgumentNullException(nameof(_produto));
            }

            var produto = new ProdutoBuilder()
                          .WithId(_produto.Id)
                          .WithFornecedor(_produto.Fornecedor)
                          .WithFornecedorId(_produto.FornecedorId)
                          .WithNome(_produto.Nome)
                          .WithPreco(_produto.Preco)
                          .WithQuantidade(_produto.Quantidade)
                          .Build();

            return(produto);
        }
        public static List <Produto> GetProdutosParaTestes()
        {
            var produto1 = new ProdutoBuilder()
                           .WithId(Guid.NewGuid())
                           .WithNome("Produto teste 1")
                           .Build();

            var produto2 = new ProdutoBuilder()
                           .WithId(Guid.NewGuid())
                           .WithNome("Produto teste 2")
                           .Build();

            var categoria = new CategoriaDoProdutoBuilder()
                            .WithId(Guid.NewGuid())
                            .WithNome("Categoria teste")
                            .Build();

            produto2.SetCategoriaDoProduto(categoria);

            return(new List <Produto>()
            {
                produto1, produto2
            });
        }
예제 #27
0
        public void ValidarMatricula()
        {
            var produto = ProdutoBuilder.UmProduto().ComInscricao(IdentificadoresPadrao.InscricaoId).Build();

            Assert.That(() => produto.Validar().Validate(), GeraErro($"Não foi informada a matricula da inscrição { produto.InscricaoCertificado }"));
        }
예제 #28
0
        public void ValidarCodigoProduto()
        {
            var produto = ProdutoBuilder.UmProduto().ComInscricao(IdentificadoresPadrao.InscricaoId).Build();

            Assert.That(() => produto.Validar().Validate(), GeraErro($"Não foi informado o produtoId para a inscricao { produto.InscricaoCertificado }"));
        }
예제 #29
0
        public void ValidarInscricaoCertificado()
        {
            var produto = ProdutoBuilder.UmProduto().Build();

            Assert.That(() => produto.Validar().Validate(), GeraErro("Não foi informado o numero de certificado / inscrição"));
        }
 public void DeveCriarProdutoInvalido(string nomeInvalido)
 {
     Assert.Throws <ArgumentException>(() => ProdutoBuilder.Novo().ComNome(nomeInvalido)
                                       .Build()).ComMensagem("nome inválido");
 }