public void Create_Should_return_200_ok()
        {
            var orderRequest = new OrderRequestModel()
            {
                Pizzas = new List <string>()
                {
                    "margarita"
                },
                Drinks = new List <string>()
                {
                    "cocacola"
                },
                ExtraIngredients = new List <string>()
                {
                    "kronärtskocka"
                }
            };

            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var order          = new Order(calculatePrice, menu, validate);

            var controller = new  OrdersController(order, menu);

            var actual = controller.Create(orderRequest);

            var contentResult = actual.As <OkObjectResult>();

            actual.Should().Be(contentResult);
        }
Exemple #2
0
        public void OrderDto_should_change_all_other_items_if_orderRequest_is_not_null()
        {
            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var sut            = new Order(calculatePrice, menu, validate);
            var orderId        = new Guid();
            var orderDto       = new OrderDto()
            {
                Id         = orderId,
                TotalPrice = 85,
                Pizzas     = new List <PizzaModel>()
                {
                    new PizzaModel()
                    {
                        Name = "margarita"
                    }
                },
                Approved = false
            };

            Menu.Orders = new List <OrderDto>();
            Menu.Orders.Add(orderDto);
            var orderRequest = new OrderRequestModel()
            {
                Drinks = null,
                Pizzas = new List <string>()
                {
                    "hawaii"
                },
                ExtraIngredients = null
            };
            //Act
            var actual = sut.ChangeOrderRequest(orderId, orderRequest, false);

            //Assert
            actual.Approved.Should().BeFalse();
            actual.Pizzas.First().Name.Should().Be(orderRequest.Pizzas.First());
            actual.Pizzas.First().Ingredients.Should().NotBeNull();
        }
Exemple #3
0
        public void HandleRequest_should_accept_only_drinks()
        {
            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var sut            = new Order(calculatePrice, menu, validate);
            var orderRequest   = new OrderRequestModel()
            {
                Drinks = new List <string>()
                {
                    "cocacola"
                }
            };

            //Act
            Action actual = () => sut.HandleRequest(orderRequest);

            //Assert
            actual.Should().NotBeNull();
        }
Exemple #4
0
        public void HandleRequest_should_not_accept_only_extra_ingredients()
        {
            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var sut            = new Order(calculatePrice, menu, validate);
            var orderRequest   = new OrderRequestModel()
            {
                ExtraIngredients = new List <string>()
                {
                    "kronärtskocka"
                }
            };

            //Act
            Action actual = () => sut.HandleRequest(orderRequest);

            //Assert
            actual.Should().Throw <NullReferenceException>();
        }
Exemple #5
0
        public void HandleRequest_should_only_return_items_on_menu()
        {
            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var sut            = new Order(calculatePrice, menu, validate);
            var orderRequest   = new OrderRequestModel()
            {
                Pizzas = new List <string>()
                {
                    "bananpizza"
                }
            };

            //Act
            Action actual = () => sut.HandleRequest(orderRequest);

            //Assert
            actual.Should().Throw <ArgumentException>();
        }
Exemple #6
0
        public void OrderDto_should_only_change_approved_if_orderRequest_is_null()
        {
            //Arrange
            var menu           = new Menu();
            var validate       = new Validate(menu);
            var calculatePrice = new CalculateOrderPrice();
            var sut            = new Order(calculatePrice, menu, validate);
            var orderId        = new Guid();
            var orderDto       = new OrderDto()
            {
                Id         = orderId,
                TotalPrice = 85,
                Pizzas     = new List <PizzaModel>()
                {
                    new PizzaModel()
                    {
                        Name = "margarita"
                    }
                },
                Approved = false
            };

            Menu.Orders = new List <OrderDto>();
            Menu.Orders.Add(orderDto);
            var orderRequest = new OrderRequestModel()
            {
                Drinks           = null,
                Pizzas           = null,
                ExtraIngredients = null
            };
            //Act
            var actual = sut.ChangeOrderRequest(orderId, orderRequest, true);

            //Assert
            actual.Approved.Should().BeTrue();
            actual.Should().Be(orderDto);
        }
        public void CalculatePrice_should_return_correct_price()
        {
            //Arrange
            var calculatePrice = new CalculateOrderPrice();
            var orderDto       = new OrderDto()
            {
                Id         = Guid.NewGuid(),
                TotalPrice = 85,
                Pizzas     = new List <PizzaModel>()
                {
                    new PizzaModel()
                    {
                        Name = "margarita"
                    },
                    new PizzaModel()
                    {
                        Name = "hawaii"
                    }
                },
                ExtraIngredients = new List <ExtraIngredientsModel?>()
                {
                    new ExtraIngredientsModel()
                    {
                        Name = "kronärtskocka"
                    },
                    new ExtraIngredientsModel()
                    {
                        Name = "kronärtskocka"
                    }
                },
                Drinks = new List <DrinksModel>()
                {
                    new DrinksModel()
                    {
                        Name = "cocacola"
                    },
                    new DrinksModel()
                    {
                        Name = "sprite"
                    }
                },
                Approved = false
            };

            var pizzas = new List <PizzaModel>()
            {
                new PizzaModel()
                {
                    Name = "margarita"
                },
                new PizzaModel()
                {
                    Name = "hawaii"
                }
            };

            var drinks = new List <DrinksModel>()
            {
                new DrinksModel()
                {
                    Name = "cocacola"
                },
                new DrinksModel()
                {
                    Name = "sprite"
                }
            };

            var extra = new List <ExtraIngredientsModel>()
            {
                new ExtraIngredientsModel()
                {
                    Name = "kronärtskocka"
                },
                new ExtraIngredientsModel()
                {
                    Name = "kronärtskocka"
                }
            };

            var pizzaPrice = calculatePrice.CalculatePizzaPrice(pizzas);
            var drinkPrice = calculatePrice.CalculateDrinksPrice(drinks);
            var extraPrice = calculatePrice.CalculateExtraIngredientsPrice(extra);

            //act
            var actual = calculatePrice.CalculateTotalOrderPrice(orderDto);

            //assert
            actual.Should().Be(pizzaPrice + drinkPrice + extraPrice);
        }