public void CadastraProdutoNaVendaFechadaErro()
        {
            var servico        = Servico as ServicoDeProdutoNaVenda;
            var venda          = VendaTeste.CadastreUmaVenda();
            var produtoNaVenda = CriaProdutoEFinalizaAVenda(venda);

            var produto = ProdutoTeste.CadastreUmProduto();

            var ex = Assert.Throws <Exception>(() => servico.Cadastre(venda.Codigo, produto.Codigo, 1));

            Assert.Equal(ex.Message, ConstantesDeValidacaoDoModel.NAO_EH_POSSIVEL_ALTERAR_UMA_VENDA_FECHADA);
        }
        public void AdicionarProdutoErradoNaVendaErro()
        {
            var servico = Servico as ServicoDeProdutoNaVenda;

            var venda           = VendaTeste.CadastreUmaVenda();
            var codigoDoProduto = ObtenhaUmCodigo();
            int quantidade      = 1;

            var ex = Assert.Throws <Exception>(() => servico.Cadastre(venda.Codigo, codigoDoProduto, quantidade));

            Assert.Equal(ex.Message, ConstantesDeValidacaoDoModel.O_PRODUTO_INFORMADO_NAO_FOI_ENCONTRADO);

            VendaTeste.RemovaUmaVenda(venda.Codigo);
        }
        public void AdicionarProdutoNaVenda()
        {
            var servico = Servico as ServicoDeProdutoNaVenda;

            var venda      = VendaTeste.CadastreUmaVenda();
            var produto    = ProdutoTeste.CadastreUmProduto();
            int quantidade = 1;

            var produtoNaVenda = servico.Cadastre(venda.Codigo, produto.Codigo, quantidade);

            Assert.NotEqual(produtoNaVenda.Codigo, 0);

            servico.Remova(produtoNaVenda.Codigo);
            VendaTeste.RemovaUmaVenda(venda.Codigo);
            ProdutoTeste.RemovaUmProduto(produto.Codigo);
        }
        public void AdicionarProdutoNaVendaECalculaODeconto(int quantidadeDeProdutos, decimal descontoEsperado)
        {
            var servico = Servico as ServicoDeProdutoNaVenda;

            var venda   = VendaTeste.CadastreUmaVenda();
            var produto = ProdutoTeste.CadastreUmProduto();

            var produtoNaVenda = servico.Cadastre(venda.Codigo, produto.Codigo, quantidadeDeProdutos);

            var valorTotal = quantidadeDeProdutos * produto.Valor;
            var desconto   = valorTotal * (descontoEsperado / 100);

            Assert.NotEqual(produtoNaVenda.Codigo, 0);
            Assert.Equal(produtoNaVenda.Desconto, desconto);

            servico.Remova(produtoNaVenda.Codigo);
            VendaTeste.RemovaUmaVenda(venda.Codigo);
            ProdutoTeste.RemovaUmProduto(produto.Codigo);
        }
        public void RemoverProdutoNaVenda()
        {
            var servico = Servico as ServicoDeProdutoNaVenda;

            var produto1 = ProdutoTeste.CadastreUmProduto();
            var produto2 = ProdutoTeste.CadastreUmProduto();
            var venda    = VendaTeste.CadastreUmaVenda();

            var produtoNaVenda1 = servico.Cadastre(venda.Codigo, produto1.Codigo, 1);
            var produtoNaVenda2 = servico.Cadastre(venda.Codigo, produto2.Codigo, 1);

            servico.Remova(produtoNaVenda1.Codigo);
            servico.Remova(produtoNaVenda2.Codigo);

            var produtoNaVenda1DoBancoDeDados = servico.Consulte(produtoNaVenda1.Codigo);
            var produtoNaVenda2DoBancoDeDados = servico.Consulte(produtoNaVenda2.Codigo);

            Assert.Equal(produtoNaVenda1DoBancoDeDados, null);
            Assert.Equal(produtoNaVenda2DoBancoDeDados, null);

            VendaTeste.RemovaUmaVenda(venda.Codigo);
            ProdutoTeste.RemovaUmProduto(produto1.Codigo);
            ProdutoTeste.RemovaUmProduto(produto2.Codigo);
        }