public void AoFinalizarCompraCarrinhoDeveSerEsvaziado()
        {
            var produto = new Produto();
            var quantidade = 1;

            var carroDeCompras = new CarroDeCompras();
            carroDeCompras.AdicionarItemPedido(new ItemPedido() { Produto = produto, Quantidade = quantidade });

            carroDeCompras.FinalizarCompra(FormaPagamento.CartaoCreditoVisa);

            carroDeCompras.ItensPedido.Should().BeEmpty();
        }
        public void AoFinalizarCompraDeveSerAtualizadoEstoque()
        {
            var produto = new Produto() { QuantidadeEmEstoque = 1};
            var quantidade = produto.QuantidadeEmEstoque;

            var carroDeCompras = new CarroDeCompras();
            carroDeCompras.AdicionarItemPedido(new ItemPedido() { Produto = produto, Quantidade = quantidade });

            var pedido = carroDeCompras.FinalizarCompra(FormaPagamento.CartaoCreditoVisa);

            pedido.ItensPedido[0].Produto.QuantidadeEmEstoque.Should().Be(0);
        }
        public void AoFinalizarCompraDeveSerGeradoUmPedido()
        {
            var produto = new Produto();
            var quantidade = 1;

            var carroDeCompras = new CarroDeCompras();
            carroDeCompras.AdicionarItemPedido(new ItemPedido() { Produto = produto, Quantidade = quantidade});

            var pedido = carroDeCompras.FinalizarCompra(FormaPagamento.CartaoCreditoVisa);

            pedido.ItensPedido[0].Produto.Should().Be(produto);
            pedido.ItensPedido[0].Quantidade.Should().Be(quantidade);
            pedido.FormaPagamento.Id.Should().Be(FormaPagamento.CartaoCreditoVisa.Id);
        }
        public ActionResult FinalizarCompra(CarroDeCompras carroDeCompras, string idFormaPagamento)
        {
            if (carroDeCompras.CompraPodeSerFinalizada())
            {
                var pedido = carroDeCompras.FinalizarCompra(FormaPagamento.ObterPorId(idFormaPagamento));
                _pedidoService.IncluirPedido(pedido);
                TempData["Mensagem"] = "Pedido realizado com sucesso.";
            } else
            {
                TempData["Mensagem"] = "Estoque insuficiente para sua compra.";
            }

            return RedirectToAction("Index");
        }