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 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); }
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 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 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 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); }