コード例 #1
0
        public void Valor_pedido_valido_com_uma_pizza_e_dois_sabores()
        {
            //Arrange
            var order   = new Order();
            var pizza   = new Pizza();
            var flavor1 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var flavor2 = new Flavor {
                Name = "Pepperoni", Value = 55
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };

            pizza.PizzaFlavors.Add(pizzaFlavor1);
            pizza.PizzaFlavors.Add(pizzaFlavor2);
            order.Pizzas.Add(pizza);

            //Act
            order.CalculateOrder();

            //Assert
            order.TotalValue.Should().Be(48.75M);
            order.Pizzas.FirstOrDefault()?.Value.Should().Be(48.75M);
        }
コード例 #2
0
        public void DeleteCustomerByIdShouldCauseCustomerToBeNotContainedByDbSet()
        {
            // Arrange
            var mockFlavor = Builder <PizzaFlavor> .CreateNew().Build();

            var initialList = new PizzaFlavor[] { mockFlavor };
            var mockDbSet   = new MockDbSet <PizzaFlavor>(initialList);
            var mockContext = new Mock <IContext>();

            mockContext.SetupProperty <IDbSet <PizzaFlavor> >(_ => _.PizzaFlavors)
            .SetupGet(_ => _.PizzaFlavors)
            .Returns(mockDbSet);
            mockContext.Setup(_ => _.Save())
            .Callback(mockDbSet.Save);
            Context    = mockContext.Object;
            Repository = new PizzaFlavorRepository(Context);

            // Act
            Repository.DeleteFlavorById(mockFlavor.Id);

            // Assert
            var contains = mockDbSet.Contains(mockFlavor);

            Assert.IsFalse(contains);
        }
コード例 #3
0
        public void Pedido_invalido_sem_cadastro_e_sem_informacoes_do_endereco_solicitante()
        {
            //Arrange
            var order = new Order {
                Customer = new Customer {
                    Address = new Address()
                }
            };
            var pizza  = new Pizza();
            var flavor = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor = new PizzaFlavor {
                Flavor = flavor
            };

            pizza.PizzaFlavors.Add(pizzaFlavor);
            order.Pizzas.Add(pizza);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeFalse();
            resultValidation.Errors.Count.Should().Be(4);
        }
コード例 #4
0
        public void Valor_pedido_valido_com_duas_pizzas_e_um_sabor_cada()
        {
            //Arrange
            var order   = new Order();
            var pizza1  = new Pizza();
            var flavor1 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };

            pizza1.PizzaFlavors.Add(pizzaFlavor1);
            order.Pizzas.Add(pizza1);

            var pizza2  = new Pizza();
            var flavor2 = new Flavor {
                Name = "Veggie", Value = 59.99M
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };

            pizza2.PizzaFlavors.Add(pizzaFlavor2);
            order.Pizzas.Add(pizza2);

            //Act
            order.CalculateOrder();

            //Assert
            order.TotalValue.Should().Be(102.49M);
            order.Pizzas.FirstOrDefault()?.Value.Should().Be(flavor1.Value);
            order.Pizzas.LastOrDefault()?.Value.Should().Be(flavor2.Value);
        }
コード例 #5
0
        public void Pedido_valido_com_dez_pizzas()
        {
            //Arrange
            var order = new Order {
                CustomerId = 1
            };

            for (var i = 0; i < 10; i++)
            {
                var pizza  = new Pizza();
                var flavor = new Flavor {
                    Name = "Calabresa", Value = 42.5M
                };
                var pizzaFlavor = new PizzaFlavor {
                    Flavor = flavor
                };
                pizza.PizzaFlavors.Add(pizzaFlavor);
                order.Pizzas.Add(pizza);
            }

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeTrue();
            resultValidation.Errors.Count.Should().Be(0);
        }
コード例 #6
0
        public void Pedido_invalido_sem_cadastro_e_sem_endereco_solicitante()
        {
            //Arrange
            var order = new Order {
                Customer = new Customer()
            };
            var pizza  = new Pizza();
            var flavor = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor = new PizzaFlavor {
                Flavor = flavor
            };

            pizza.PizzaFlavors.Add(pizzaFlavor);
            order.Pizzas.Add(pizza);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeFalse();
            resultValidation.Errors.Count.Should().Be(1);
            resultValidation.Errors.FirstOrDefault().ErrorMessage.Should().Be("Deve ser informado o endereço de entrega.");
        }
コード例 #7
0
        public void Pedido_invalido_com_onze_pizzas()
        {
            //Arrange
            var order = new Order {
                CustomerId = 1
            };

            for (var i = 0; i < 11; i++)
            {
                var pizza  = new Pizza();
                var flavor = new Flavor {
                    Name = "Calabresa", Value = 42.5M
                };
                var pizzaFlavor = new PizzaFlavor {
                    Flavor = flavor
                };
                pizza.PizzaFlavors.Add(pizzaFlavor);
                order.Pizzas.Add(pizza);
            }

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeFalse();
            resultValidation.Errors.Count.Should().Be(1);
            resultValidation.Errors.FirstOrDefault().ErrorMessage.Should().Be("O número máximo de pizzas por pedido é dez(10).");
        }
コード例 #8
0
        public void Pedido_valido_com_duas_pizzas_e_um_sabor_cada()
        {
            //Arrange
            var order = new Order {
                CustomerId = 1
            };
            var pizza1  = new Pizza();
            var flavor1 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };

            pizza1.PizzaFlavors.Add(pizzaFlavor1);
            order.Pizzas.Add(pizza1);

            var pizza2  = new Pizza();
            var flavor2 = new Flavor {
                Name = "Veggie", Value = 59.99M
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };

            pizza2.PizzaFlavors.Add(pizzaFlavor2);
            order.Pizzas.Add(pizza2);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeTrue();
            resultValidation.Errors.Count.Should().Be(0);
        }
コード例 #9
0
        public void Pedido_valido_com_uma_pizza_e_dois_sabores()
        {
            //Arrange
            var order = new Order {
                CustomerId = 1
            };
            var pizza   = new Pizza();
            var flavor1 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var flavor2 = new Flavor {
                Name = "Pepperoni", Value = 55
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };

            pizza.PizzaFlavors.Add(pizzaFlavor1);
            pizza.PizzaFlavors.Add(pizzaFlavor2);
            order.Pizzas.Add(pizza);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeTrue();
            resultValidation.Errors.Count.Should().Be(0);
        }
コード例 #10
0
ファイル: Pizza.cs プロジェクト: WillPassig/PizzariaUDS
        public Pizza(PizzaSize size, PizzaFlavor flavor, List <PizzaCustomization> customizations = null)
        {
            Size           = size;
            Flavor         = flavor;
            Customizations = customizations ?? new List <PizzaCustomization>();

            CalculatePriceAndEstimatedTime();
        }
コード例 #11
0
ファイル: Pizza.cs プロジェクト: WillPassig/PizzariaUDS
        private void ProcessFlavor(PizzaFlavor flavor)
        {
            switch (flavor)
            {
            case PizzaFlavor.CALABRESA:
                break;

            case PizzaFlavor.MARGUERITA:
                break;

            case PizzaFlavor.PORTUGUESA:
                EstimatedPreparationTime += 5;
                break;
            }
        }
コード例 #12
0
        public void Valor_pedido_valido_com_duas_pizzas_dois_sabores_cada()
        {
            //Arrange
            var order   = new Order();
            var pizza1  = new Pizza();
            var flavor1 = new Flavor {
                Name = "3 Queijos", Value = 50M
            };
            var flavor2 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };

            pizza1.PizzaFlavors.Add(pizzaFlavor1);
            pizza1.PizzaFlavors.Add(pizzaFlavor2);
            order.Pizzas.Add(pizza1);

            var pizza2  = new Pizza();
            var flavor3 = new Flavor {
                Name = "Veggie", Value = 59.99M
            };
            var flavor4 = new Flavor {
                Name = "Pepperoni ", Value = 55M
            };
            var pizzaFlavor3 = new PizzaFlavor {
                Flavor = flavor3
            };
            var pizzaFlavor4 = new PizzaFlavor {
                Flavor = flavor4
            };

            pizza2.PizzaFlavors.Add(pizzaFlavor3);
            pizza2.PizzaFlavors.Add(pizzaFlavor4);
            order.Pizzas.Add(pizza2);

            //Act
            order.CalculateOrder();

            //Assert
            order.TotalValue.Should().Be(103.74M);
            order.Pizzas.FirstOrDefault()?.Value.Should().Be(46.25M);
            order.Pizzas.LastOrDefault()?.Value.Should().Be(57.49M);
        }
コード例 #13
0
        public void GetFlavorByIdShouldReturnSameFlavorIfExistsInDbSet()
        {
            // Arrange
            var mockFlavor = Builder <PizzaFlavor> .CreateNew().Build();

            var initialList = new PizzaFlavor[] { mockFlavor };
            var mockDbSet   = new MockDbSet <PizzaFlavor>(initialList);
            var mockContext = new Mock <IContext>();

            mockContext.SetupProperty <IDbSet <PizzaFlavor> >(_ => _.PizzaFlavors)
            .SetupGet(_ => _.PizzaFlavors)
            .Returns(mockDbSet);
            Context    = mockContext.Object;
            Repository = new PizzaFlavorRepository(Context);

            // Act
            var result = Repository.GetFlavorById(mockFlavor.Id);

            // Assert
            Assert.AreEqual(mockFlavor, result);
        }
コード例 #14
0
        public void Pedido_invalido_com_uma_pizzas_e_tres_sabores()
        {
            //Arrange
            var order = new Order {
                CustomerId = 1
            };
            var pizza   = new Pizza();
            var flavor1 = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var flavor2 = new Flavor {
                Name = "3 Queijos", Value = 50M
            };
            var flavor3 = new Flavor {
                Name = "Veggie", Value = 59.99M
            };
            var pizzaFlavor1 = new PizzaFlavor {
                Flavor = flavor1
            };
            var pizzaFlavor2 = new PizzaFlavor {
                Flavor = flavor2
            };
            var pizzaFlavor3 = new PizzaFlavor {
                Flavor = flavor3
            };

            pizza.PizzaFlavors.Add(pizzaFlavor1);
            pizza.PizzaFlavors.Add(pizzaFlavor2);
            pizza.PizzaFlavors.Add(pizzaFlavor3);
            order.Pizzas.Add(pizza);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeFalse();
            resultValidation.Errors.Count.Should().Be(1);
            resultValidation.Errors.FirstOrDefault().ErrorMessage.Should().Be("Cada pizza pode ter no máximo dois(2) sabores.");
        }
コード例 #15
0
        public void Valor_pedido_valido_com_uma_pizza_e_um_sabor()
        {
            //Arrange
            var order  = new Order();
            var pizza  = new Pizza();
            var flavor = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor = new PizzaFlavor {
                Flavor = flavor
            };

            pizza.PizzaFlavors.Add(pizzaFlavor);
            order.Pizzas.Add(pizza);

            //Act
            order.CalculateOrder();

            //Assert
            order.TotalValue.Should().Be(flavor.Value);
            order.Pizzas.FirstOrDefault()?.Value.Should().Be(flavor.Value);
        }
コード例 #16
0
        public void Pedido_invalido_sem_cadastro_e_sem_informacoes_de_cidade_do_endereco_solicitante()
        {
            //Arrange
            var order = new Order
            {
                Customer = new Customer
                {
                    Address = new Address
                    {
                        Street       = "Thiago Vieira de Castro",
                        Number       = 56,
                        Complement   = "Apto. 301",
                        Neighborhood = "Triâgulo",
                        State        = "SC",
                    }
                }
            };
            var pizza  = new Pizza();
            var flavor = new Flavor {
                Name = "Calabresa", Value = 42.5M
            };
            var pizzaFlavor = new PizzaFlavor {
                Flavor = flavor
            };

            pizza.PizzaFlavors.Add(pizzaFlavor);
            order.Pizzas.Add(pizza);

            //Act
            var resultValidation = order.Validate();

            //Assert
            resultValidation.IsValid.Should().BeFalse();
            resultValidation.Errors.Count.Should().Be(1);
            resultValidation.Errors.FirstOrDefault().ErrorMessage.Should().Be("Deve ser informado a cidade de entrega.");
        }
コード例 #17
0
        public async Task Inserindo_um_pedido_via_api()
        {
            var flavor1 = new Flavor
            {
                Name  = "3 Queijos",
                Value = 50M
            };

            var jsonContent = JsonConvert.SerializeObject(flavor1);
            var content     = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            var requisicao = await _integrationTestFixture.Client.PostAsync($"/api/Flavor", content);

            var resposta = await requisicao.Content.ReadAsStringAsync();

            Assert.True(requisicao.IsSuccessStatusCode);

            var flavor2 = new Flavor
            {
                Name  = "Veggie",
                Value = 59.99M
            };

            jsonContent = JsonConvert.SerializeObject(flavor2);
            content     = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            requisicao = await _integrationTestFixture.Client.PostAsync($"/api/Flavor", content);

            resposta = await requisicao.Content.ReadAsStringAsync();

            Assert.True(requisicao.IsSuccessStatusCode);

            var customer = new Customer
            {
                Cpf      = "029.336.559-85",
                Name     = "Marcio Machado",
                NickName = "Marcio",
                Phone    = "(49)98802-2184",
                Address  = new Address
                {
                    Street       = "Thiago Vieira de Castro",
                    Number       = 56,
                    Neighborhood = "Triângulo",
                    City         = "Lages",
                    State        = "SC"
                }
            };

            jsonContent = JsonConvert.SerializeObject(customer);
            content     = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            requisicao = await _integrationTestFixture.Client.PostAsync($"/api/Customer", content);

            resposta = await requisicao.Content.ReadAsStringAsync();

            Assert.True(requisicao.IsSuccessStatusCode);

            var order = new Order
            {
                CustomerId = 1,
                Status     = StatusPizza.InProgress,
                OrderDate  = DateTime.Now,
            };
            var pizza = new Pizza();

            var pizzaFlavor1 = new PizzaFlavor
            {
                FlavorId = 1,
                Flavor   = flavor1
            };

            pizza.PizzaFlavors.Add(pizzaFlavor1);

            var pizzaFlavor2 = new PizzaFlavor
            {
                FlavorId = 2,
                Flavor   = flavor2
            };

            pizza.PizzaFlavors.Add(pizzaFlavor2);

            order.Pizzas.Add(pizza);

            jsonContent = JsonConvert.SerializeObject(order);
            content     = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            requisicao = await _integrationTestFixture.Client.PostAsync($"/api/OrderPizza", content);

            resposta = await requisicao.Content.ReadAsStringAsync();

            Assert.True(requisicao.IsSuccessStatusCode);
        }