private static void Decorator()
        {
            var cheeseDecorator = new CheeseDecorator(null);
            var pizza           = new PizzaDecorator(cheeseDecorator);

            Console.WriteLine(pizza.Display());
        }
示例#2
0
        public void DeveCriarUmaPizzaMargueritaSemAdicionais()
        {
            var pizza = new PizzaDecorator(new PizzaPequena(new SaborMarguerita()));

            pizza.AdicionarPersonalizacao(null);

            Assert.Equal(string.Empty, pizza.Personalizacoes());
        }
示例#3
0
        public void DeveCriarUmaPizzaMargueritaComTodosAdicionais()
        {
            var pizza = new PizzaDecorator(new PizzaPequena(new SaborMarguerita()));

            pizza.AdicionarPersonalizacao(new BordaRecheada());
            pizza.AdicionarPersonalizacao(new ExtraBacon());
            pizza.AdicionarPersonalizacao(new SemCebola());

            Assert.NotEqual(string.Empty, pizza.Personalizacoes());
        }
        public void CalculateCost_Returns_Cost()
        {
            //Arrange
            var pizzaDecorator = new PizzaDecorator(_largePizza);

            //Act
            var cost = pizzaDecorator.CalculateCost();

            //Assert
            Assert.AreEqual(9.00, cost);
        }
        public void GetDescription_Returns_Description()
        {
            //Arrange
            var pizzaDecorator = new PizzaDecorator(_largePizza);

            //Act
            var description = pizzaDecorator.GetDescription();

            //Assert
            Assert.AreEqual("Large Pizza", description);
        }
示例#6
0
        public void DeveCriarUmaPizzaMargueritaComDoisAdicionais()
        {
            var pizza = new PizzaDecorator(new PizzaPequena(new SaborMarguerita()));

            pizza.AdicionarPersonalizacao(new BordaRecheada());
            pizza.AdicionarPersonalizacao(new SemCebola());

            Assert.NotEqual(string.Empty, pizza.Personalizacoes());
            Assert.Equal($"{ConstantesPersonalizacao.BordaRecheada}, {ConstantesPersonalizacao.SemCebola}", pizza.Personalizacoes());
            Assert.Equal(25, pizza.ValorTotal());
            Assert.Equal(20, pizza.TempoTotalPreparo());
            //Assert.Equal(25, pizza.Valor());
            //Assert.Equal(20, pizza.TempoPreparo());
        }
示例#7
0
        public RespostaApi Inserir(PedidoViewModel pedidoViewModel)
        {
            if (!ValidarTamanho(pedidoViewModel.Tamanho))
            {
                return(new RespostaApi($"Tamanho inválido ou não informado: {pedidoViewModel.Tamanho}"));
            }

            if (!ValidarSabor(pedidoViewModel.Sabor))
            {
                return(new RespostaApi($"Sabor inválido ou não informado: {pedidoViewModel.Sabor}"));
            }

            var pizza = PizzaDecorator.Criar(pedidoViewModel.Tamanho, pedidoViewModel.Sabor);

            if (pedidoViewModel.Personalizacoes?.Count > 0)
            {
                var adicionaisInvalidos = ValidarPersonalizacoes(pedidoViewModel.Personalizacoes);
                if (adicionaisInvalidos.Any())
                {
                    return(new RespostaApi("Personalizações inválidas", adicionaisInvalidos));
                }
                pedidoViewModel.Personalizacoes.ForEach(x => pizza.AdicionarPersonalizacao(ServicoPizza.Personalizacoes[x]));
            }

            var pedido = new Pedido
            {
                Tamanho         = pizza.Tamanho(),
                Sabor           = pizza.SaborEscolhido(),
                Personalizacoes = pizza.Personalizacoes(),
                ValorTotal      = pizza.ValorTotal(),
                TempoPreparo    = pizza.TempoTotalPreparo()
            };
            var result = _contexto.Pedidos.Add(pedido);

            _contexto.SaveChanges();

            var resumo = new
            {
                Pedido          = result.Entity.Id,
                Tamanho         = pizza.Tamanho(),
                Sabor           = pizza.SaborEscolhido(),
                Personalizacoes = pizza.DetalhesPersonalizacoes(),
                ValorPizza      = pizza.Valor(),
                TempoPreparo    = pizza.TempoTotalPreparo(),
                ValorPedido     = pizza.ValorTotal()
            };

            return(new RespostaApi("Pedido criado", resumo));
        }
        public void DeveCriarUmaPizzaGrande()
        {
            var pizza = new PizzaDecorator(new PizzaGrande(new SaborCalabresa()));

            Assert.Equal(ConstantesPizza.TamanhoGrande, pizza.Tamanho());
        }
        public void DeveCriarUmaPizzaPequena()
        {
            var pizza = new PizzaDecorator(new PizzaPequena(new SaborCalabresa()));

            Assert.Equal(ConstantesPizza.TamanhoPequeno, pizza.Tamanho());
        }
示例#10
0
        public void DeveCriarUmaPizzaSaborPortuguesa()
        {
            var pizza = new PizzaDecorator(new PizzaPequena(new SaborPortuguesa()));

            Assert.Equal(ConstantesSabor.Portuguesa, pizza.SaborEscolhido());
        }
示例#11
0
 public static void Execute()
 {
     PizzaDecorator.Execute();
 }