public void PromocaoLightMuitaCarneMuitoQueito( )
        {
            var lanche = Repository.Repository.Lanches.GetById(2);

            var adicionais = new List <EnumIngrediente> {
                EnumIngrediente.HamburguerCarne,
                EnumIngrediente.HamburguerCarne,
                EnumIngrediente.Queijo,
                EnumIngrediente.Queijo,
                EnumIngrediente.Alface
            };

            var valorAdicionais = Repository.Repository.Ingredientes.GetValorIngredientes(adicionais);

            var desconto = ((adicionais.Concat(lanche.Ingredientes).Count(c => c == EnumIngrediente.Queijo) / 3) * Repository.Repository.Ingredientes.GetById(EnumIngrediente.Queijo).Valor);

            desconto += ((adicionais.Concat(lanche.Ingredientes).Count(c => c == EnumIngrediente.HamburguerCarne) / 3) * Repository.Repository.Ingredientes.GetById(EnumIngrediente.HamburguerCarne).Valor);

            var controller = new LanchesController( );
            var result     = controller.GetSumPromocoes(lanche.Id, string.Join(",", adicionais.Select(s => ( int )s)));

            var valorLanche = (lanche.Valor + valorAdicionais);

            valorLanche -= (valorLanche * 0.1);
            valorLanche -= desconto;

            Assert.AreEqual(valorLanche, (lanche.Valor + valorAdicionais) - result);
        }
        public void ValorLanchesCardapio()
        {
            // Valor de cada ingrediente
            var allIngredientes = Repository.Repository.Ingredientes.GetAll( );

            var controller = new LanchesController( );
            var result     = controller.GetAll( ) as List <Models.Lanche>;

            foreach (Models.Lanche lanche in result)
            {
                double valueIngredientes = 0;
                lanche.Ingredientes.ForEach(f => valueIngredientes += Repository.Repository.Ingredientes.GetById(f).Valor);

                Assert.AreEqual(lanche.Valor, valueIngredientes);
            }
        }
        public void PromocaoMuitoQueijo( )
        {
            var lanche = Repository.Repository.Lanches.GetById(1);

            var adicionais = new List <EnumIngrediente> {
                EnumIngrediente.Queijo,
                EnumIngrediente.Queijo
            };

            var valorAdicionais = Repository.Repository.Ingredientes.GetValorIngredientes(adicionais);
            var desconto        = ((adicionais.Concat(lanche.Ingredientes).Count(w => w == EnumIngrediente.Queijo) / 3) * Repository.Repository.Ingredientes.GetById(EnumIngrediente.Queijo).Valor);

            var controller = new LanchesController( );
            var result     = controller.GetSumPromocoes(lanche.Id, string.Join(",", adicionais.Select(s => ( int )s)));

            Assert.AreEqual((lanche.Valor + valorAdicionais) - desconto, (lanche.Valor + valorAdicionais) - result);
        }
        public void PromocaoLight( )
        {
            var lanche = Repository.Repository.Lanches.GetById(2);

            var adicionais = new List <EnumIngrediente> {
                EnumIngrediente.Alface,
                EnumIngrediente.Ovo
            };

            var valorAdicionais = Repository.Repository.Ingredientes.GetValorIngredientes(adicionais);

            var controller = new LanchesController( );
            var result     = controller.GetSumPromocoes(lanche.Id, string.Join(",", adicionais.Select(s => (int)s)));

            // Tem que ter 10% de desconto
            Assert.AreEqual(((lanche.Valor + valorAdicionais) * 0.1), result);
        }