public void AdicionarProdutoExistenteParaCarrinho()
        {
            Produto produto1 = new Produto
            {
                ProdutoId = 1,
                Nome = "Teste 1"
            };

            Produto produto2 = new Produto
            {
                ProdutoId = 2,
                Nome = "Teste 2"
            };
            //Produto produto3 = new Produto
            //{
            //    ProdutoId = 3,
            //    Nome = "Teste 3"
            //};

            //arrange
            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 1);
            carrinho.AdicionarItem(produto2, 1);
            carrinho.AdicionarItem(produto1, 10);

            //Act
            ItemCarrinho[] resultado = carrinho.ItensCarrinhos
                .OrderBy(c => c.Produto.ProdutoId).ToArray();

            //ver qts produto tenho no carrinho
            Assert.AreEqual(resultado.Length, 2);
            Assert.AreEqual(resultado[0].Quantidade, 11);
            Assert.AreEqual(resultado[1].Quantidade, 1);
        }
        public void AdicionarItensAoCarrinho()
        {
            //Arrange - criacao dos produtos
            Produto produto1 = new Produto
            {
                ProdutoId = 1,
                Nome = "Teste 1"
            };

            Produto produto2 = new Produto
            {
                ProdutoId = 2,
                Nome = "Teste 2"
            };

            //Arrange
            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 2);
            carrinho.AdicionarItem(produto2, 3);

            //Act
            ItemCarrinho[] itens = carrinho.ItensCarrinhos.ToArray();

            //Assert
            Assert.AreEqual(itens.Length, 2);

            //Assert.AreEqual(itens[0].Produto, produto1);
            //Assert.AreEqual(itens[1].Produto, produto2);
        }
        public void AdicionarItensAoCarrinho()
        {
            #region [-- Arrange --]

            Produtos produto01 = new Produtos
               {
                   ProdutoId=1,
                   Nome="teste 1"
               };

            Produtos produto02 = new Produtos
            {
                ProdutoId = 2,
                Nome = "teste 2"
            };

            Produtos produto03 = new Produtos
            {
                ProdutoId = 3,
                Nome = "teste 3"
            };

            Carrinho carrinho = new Carrinho();

            #endregion

            #region [-- Action --]

            carrinho.AdicionarItem(produto01, 2);
            carrinho.AdicionarItem(produto02, 3);
            carrinho.AdicionarItem(produto03, 5);

            ItensCarrinho[] itens = carrinho.ItensCarrinho.ToArray();

            #endregion

            #region [-- Assert --]

            Assert.AreEqual(itens.Length, 3);
            Assert.AreEqual(itens[0].Produto, produto01);
            Assert.AreEqual(itens[1].Produto, produto02);

            #endregion
        }
        public RedirectToRouteResult Adicionar(Carrinho carrinho, int produtoId, int quantidade, string returnUrl)
        {
            _repositorio = new ProdutosRepositorio();

            Produto produto = _repositorio.Produtos.FirstOrDefault(p => p.ProdutoId == produtoId);

            if (produto != null)
            {
                carrinho.AdicionarItem(produto, quantidade);
            }
            return RedirectToAction("Index", new { returnUrl});
        }
        public void RemoverItensCarrinho()
        {
            #region [-- Arrange --]

            Produtos produto01 = new Produtos
            {
                ProdutoId = 1,
                Nome = "teste 1"
            };

            Produtos produto02 = new Produtos
            {
                ProdutoId = 2,
                Nome = "teste 2"
            };

            Produtos produto03 = new Produtos
            {
                ProdutoId = 3,
                Nome = "teste 3"
            };

            Carrinho carrinho = new Carrinho();

            #endregion

            #region [-- Action --]

            carrinho.AdicionarItem(produto01, 2);
            carrinho.AdicionarItem(produto02, 3);
            carrinho.AdicionarItem(produto03, 5);
            carrinho.AdicionarItem(produto01, 7);

            carrinho.RemoverItem(produto02);

            #endregion

            #region [-- Assert --]

            Assert.AreEqual(carrinho.ItensCarrinho.Where(c => c.Produto == produto02).Count(), 0);
            Assert.AreEqual(carrinho.ItensCarrinho.Count(), 2);

            #endregion
        }
        public void LimparItensCarrinho()
        {
            #region [-- Arrange --]

            Produtos produto01 = new Produtos
            {
                ProdutoId = 1,
                Nome = "teste 1",
                Preco = 100M
            };

            Produtos produto02 = new Produtos
            {
                ProdutoId = 2,
                Nome = "teste 2",
                Preco = 50M
            };

            Carrinho carrinho = new Carrinho();

            #endregion

            #region [-- Action --]

            carrinho.AdicionarItem(produto01, 1);
            carrinho.AdicionarItem(produto02, 1);
            carrinho.AdicionarItem(produto01, 4);

            decimal? result = carrinho.ValorTotal();

            carrinho.LimparCarrinho();

            #endregion

            #region [-- Assert --]

            Assert.AreEqual(carrinho.ItensCarrinho.Count(), 0);

            #endregion
        }
        public void RemoverItensCarrinho()
        {
            //Arrange
            Produto produto1 = new Produto()
            {
                ProdutoId = 1,
                Nome = "Teste 1"
            };

            Produto produto2 = new Produto()
            {
                ProdutoId = 2,
                Nome = "Teste 2"
            };

            Produto produto3 = new Produto()
            {
                ProdutoId = 3,
                Nome = "Teste 3"
            };

            //Arrange
            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 1);
            carrinho.AdicionarItem(produto2, 3);
            carrinho.AdicionarItem(produto3, 5);
            carrinho.AdicionarItem(produto2, 1);

            carrinho.RemoverItem(produto2);

            Assert.AreEqual(
                carrinho.ItensCarrinho.Count(c => c.Produto == produto2),
                0
            );

            Assert.AreEqual(carrinho.ItensCarrinho.Count(),2);

        }
        public void LimparItensCarrinho()
        {
            //Arrange
            Produto produto1 = new Produto()
            {
                ProdutoId = 1,
                Nome = "Teste 1",
                Preco = 100M
            };

            Produto produto2 = new Produto()
            {
                ProdutoId = 2,
                Nome = "Teste 2",
                Preco = 50M
            };
            //Arrange
            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 1);
            carrinho.AdicionarItem(produto2, 1);
            carrinho.AdicionarItem(produto1, 3);
            
            carrinho.LimparCarrinho();

            Assert.AreEqual(carrinho.ItensCarrinho.Count(),0);
        }
        public void CalcularValorTotal()
        {
            //Arrange
            Produto produto1 = new Produto()
            {
                ProdutoId = 1,
                Nome = "Teste 1",
                Preco = 100M
            };

            Produto produto2 = new Produto()
            {
                ProdutoId = 2,
                Nome = "Teste 2",
                Preco = 50M
            };
            //Arrange
            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 1);
            carrinho.AdicionarItem(produto2, 1);
            carrinho.AdicionarItem(produto1, 3);

            decimal resultado = carrinho.ObterValorTotal();

            Assert.AreEqual(resultado, 450M);
        }
        public void CalcularValorTotal()
        {
            Produto produto1 = new Produto
            {
                ProdutoId = 1,
                Nome = "Teste 1",
                Preco = 100M
            };
            Produto produto2 = new Produto
            {
                ProdutoId = 2,
                Nome = "Teste 2",
                Preco = 50M
            };
            //Produto produto3 = new Produto
            //{
            //    ProdutoId = 3,
            //    Nome = "Teste 3"
            //};

            Carrinho carrinho = new Carrinho();

            carrinho.AdicionarItem(produto1, 1);
            carrinho.AdicionarItem(produto2, 1);
            carrinho.AdicionarItem(produto1, 3);

            Decimal resultado = carrinho.ObterValorTotal();
            Assert.AreEqual(resultado, 500M);
        }