예제 #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);
        }
예제 #2
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);
        }
예제 #3
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);
        }
예제 #4
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);
        }
예제 #5
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);
        }
예제 #6
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);
        }