public void GetAllBaskets_Should_Return_Proper_Collection()
        {
            //Arrange
            var mock      = new Mock <IBasketRepository>();
            var myBaskets = new List <BasketDTO>
            {
                new BasketDTO
                {
                    Id     = 1,
                    UserId = "25"
                },
                new BasketDTO
                {
                    Id     = 2,
                    UserId = "36"
                }
            };

            mock.Setup(x => x.GetAll()).Returns(myBaskets);
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.GetAllBaskets().ToList();

            //Assert
            Assert.AreEqual(result.Count, 2);
            Assert.AreEqual(result[0].Id, 1);
            Assert.AreEqual(result[1].UserId, "36");
        }
        public void Add_Meal_To_Basket_Can_Add_Quantity()
        {
            //Arrange
            var     mock  = new Mock <IBasketRepository>();
            MealBTO meal1 = new MealBTO {
                Id = 1, Name = "P1"
            };
            MealBTO meal2 = new MealBTO {
                Id = 2, Name = "P2"
            };

            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.AddMealToBasket(meal1, 1);
            target.AddMealToBasket(meal2, 1);
            target.AddMealToBasket(meal1, 10);

            var results = target.shoppingMeals;

            //Assert
            Assert.AreEqual(results.Count, 2);
            Assert.AreEqual(results[0].Quantity, 11);
            Assert.AreEqual(results[1].Quantity, 1);
        }
        public void Can_Remove_Meal()
        {
            //Arrange
            var     mock  = new Mock <IBasketRepository>();
            MealBTO meal1 = new MealBTO {
                Id = 1, Name = "M1"
            };
            MealBTO meal2 = new MealBTO {
                Id = 2, Name = "M2"
            };
            MealBTO meal3 = new MealBTO {
                Id = 3, Name = "M3"
            };

            //Arrange
            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.AddMealToBasket(meal1, 1);
            target.AddMealToBasket(meal2, 3);
            target.AddMealToBasket(meal3, 5);

            target.RemoveMeal(meal2);

            //Assert
            Assert.AreEqual(target.shoppingMeals.Count, 2);
            Assert.AreEqual(target.shoppingMeals.Where(c => c.Meal.Id == meal2.Id).Count(), 0);
        }
Beispiel #4
0
        public void UpdateBasket_Should_Return_Null_If_Bto_Is_Null()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.Update(myBasket)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.UpdateBasket(null);

            //Assert
            Assert.IsNull(result);
        }
        public void Add_Meal_To_Basket_Ok()
        {
            //Arrange
            var     mock  = new Mock <IBasketRepository>();
            MealBTO meal1 = new MealBTO {
                Id = 1, Name = "P1"
            };
            MealBTO meal2 = new MealBTO {
                Id = 2, Name = "P2"
            };

            //Arrange
            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.AddMealToBasket(meal1, 1);
            target.AddMealToBasket(meal2, 1);

            var results = target.shoppingMeals;

            //Assert
            Assert.AreEqual(results.Count, 2);
            Assert.AreEqual(results[0].Meal.Id, meal1.Id);
            Assert.AreEqual(results[0].Meal.Name, meal1.Name);
            Assert.AreEqual(results[1].Meal.Id, meal2.Id);
            Assert.AreEqual(results[1].Meal.Name, meal2.Name);
        }
        public void Sum_Amount_Ok()
        {
            //Arrange
            var     mock  = new Mock <IBasketRepository>();
            MealBTO meal1 = new MealBTO {
                Id = 1, Name = "P1", Price = 10
            };
            MealBTO meal2 = new MealBTO {
                Id = 2, Name = "P2", Price = 5
            };

            //Arrange
            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.AddMealToBasket(meal1, 1);
            target.AddMealToBasket(meal2, 1);
            target.AddMealToBasket(meal1, 3);


            var results = target.ComputeTotalValue();

            //Assert
            Assert.AreEqual(results, 45);
        }
Beispiel #7
0
        public void UpdateBasket_Should_Return_Valid_Data()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.Update(myBasket)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.UpdateBasket(new BasketBTO
            {
                Id     = 1,
                UserId = "25"
            });

            //Assert
            mock.Verify(u => u.Update(It.IsAny <BasketDTO>()), Times.Once());
        }
        public void GetBasketById_Should_Return_Valid_Data()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.GetById(1)).Returns(
                new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            }
                );

            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.GetBasketById(1);

            //Assert
            Assert.AreEqual(result.Id, 1);
            Assert.AreEqual(result.UserId, "25");
        }
Beispiel #9
0
        public IActionResult CreateBasket(DateTime arrivalDate)
        {
            basketUC = GetBasketUC();


            if (basketUC.shoppingMeals.Count() == 0)
            {
                return(RedirectToAction("Error", new { errorMessage = "Sorry, your basket is empty..." }));
            }
            if (!ModelState.IsValid)
            {
                return(View(basketUC));
            }
            var basketBTO = new BasketBTO();

            basketBTO.ArrivalDate = arrivalDate;

            RestaurantUC restoUC = new RestaurantUC(restoRepository);

            basketBTO.ShoppingMeals = basketUC.shoppingMeals
                                      .Select(x => x.ShoppingMealDomainToBTO())
                                      .ToList();

            basketBTO.UserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? null;

            if (basketBTO.UserId == null)
            {
                return(RedirectToAction("Error", new { errorMessage = "You have to be logged to complete your order" }));
            }

            if (!restoUC.IsOpen(basketUC.restoId, basketBTO.ArrivalDate))
            {
                return(RedirectToAction("Error", new { errorMessage = "The restaurant will be closed at this hour" }));
            }
            var result = basketUC.AddBasket(basketBTO);

            basketUC.ClearShoppingMeals();
            if (basketUC.shoppingMeals.Count == 0)
            {
                HttpContext.Session.Clear();
            }
            if (result == null)
            {
                return(RedirectToAction("Error", new { errorMessage = "We can't add this basket, please contact support" }));
            }
            string email = restoUC.FindRestoMailByRestoId(basketUC.restoId);

            if (!String.IsNullOrEmpty(email))
            {
                _emailSender.SendEmailAsync(email,
                                            "You have a new order",
                                            "See your orders by clicking here");
            }

            return(View(result));
        }
Beispiel #10
0
        private BasketUC GetBasketUC()
        {
            basketUC = HttpContext.Session.GetJson <BasketUC>("BasketUC") ?? new BasketUC(basketRepository);
            var result = new BasketUC(basketRepository);

            result.restoId       = basketUC.restoId;
            result.shoppingMeals = basketUC.shoppingMeals;
            result.ArrivalDate   = basketUC.ArrivalDate;

            return(result);
        }
        public void GetBasketsByRestoId_Should_Return_New_List_When_Not_Found()
        {
            //Arrange
            var mock = new Mock <IBasketRepository>();

            mock.Setup(x => x.GetBasketsByRestoId(36)).Returns(new List <BasketDTO>());
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.GetBasketsByRestoId(36).ToList();

            //Assert
            Assert.AreEqual(result.Count, 0);
        }
Beispiel #12
0
 public BasketController(IBasketRepository BasketRepository,
                         IMealRepository MealRepository,
                         IMealTypeRepository MealTypeRepository,
                         IRestoRepository RestoRepository, IEmailSender emailSender)
 {
     basketRepository   = BasketRepository;
     mealRepository     = MealRepository;
     mealTypeRepository = MealTypeRepository;
     restoRepository    = RestoRepository;
     _emailSender       = emailSender;
     mealUC             = new MealUC(mealRepository);
     mealTypeUC         = new MealTypeUC(mealTypeRepository);
     basketUC           = new BasketUC(basketRepository);
 }
        public void GetBasketById_Should_Return_Null_When_Not_Found()
        {
            //Arrange
            var mock = new Mock <IBasketRepository>();

            mock.Setup(x => x.GetById(25));
            BasketUC target = new BasketUC(mock.Object);

            //Act
            var result = target.GetBasketById(25);

            //Assert
            Assert.AreEqual(null, result);
            Assert.IsNull(result);
        }
Beispiel #14
0
        public void DeleteBasket_Should_Work()
        {
            //Arrange
            var mock     = new Mock <IBasketRepository>();
            var myBasket = new BasketDTO
            {
                Id     = 1,
                UserId = "25"
            };

            mock.Setup(x => x.Delete(1));
            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.DeleteBasket(1);

            //Assert
            mock.Verify(u => u.Delete(It.IsAny <int>()), Times.Once());
        }
Beispiel #15
0
        public IActionResult AddMealToBasket(int MealId, string returnUrl)
        {
            var mealBTO = mealUC.GetMealById(MealId);
            var restoId = mealUC.GetRestoIdByMealId(MealId);

            if (mealBTO != null)
            {
                /*BasketUC */
                basketUC = GetBasketUC();
                if (basketUC.restoId == 0)
                {
                    basketUC.restoId = restoId;
                }
                else if (basketUC.restoId != restoId)
                {
                    return(RedirectToAction("Error", new { errorMessage = "Sorry, your can order only in one restaurant at the same time. Please clear your basket first" }));
                }
                basketUC.AddMealToBasket(mealBTO, 1);
                SaveBasket(basketUC);
            }
            return(Redirect(returnUrl));
        }
Beispiel #16
0
        public void Add_Meal_To_Basket_Ok()
        {
            //Arrange
            var     mock  = new Mock <IBasketRepository>();
            MealBTO meal1 = new MealBTO {
                Id = 1, Name = "M1"
            };
            MealBTO meal2 = new MealBTO {
                Id = 2, Name = "M2"
            };

            //Arrange
            BasketUC target = new BasketUC(mock.Object);

            //Act
            target.AddMealToBasket(meal1, 1);
            target.AddMealToBasket(meal2, 1);

            target.ClearShoppingMeals();

            //Assert
            Assert.AreEqual(target.shoppingMeals.Count, 0);
        }
Beispiel #17
0
        public IActionResult RemoveMealFromBasket(int MealId)
        {
            var mealBTO = mealUC.GetMealById(MealId);
            int idResto = mealUC.GetRestoIdByMealId(MealId);

            if (mealBTO != null)
            {
                basketUC = GetBasketUC();
                basketUC.RemoveMeal(mealBTO);
                if (basketUC.shoppingMeals.Count == 0)
                {
                    basketUC.restoId = 0;
                    SaveBasket(basketUC);

                    return(RedirectToAction("GetAllRestaurants", "Restaurant"));
                }
                else
                {
                    SaveBasket(basketUC);
                }
            }

            return(RedirectToAction("RestaurantDetails", "Restaurant", new { id = idResto }));
        }
Beispiel #18
0
 private void SaveBasket(BasketUC basketUC)
 {
     HttpContext.Session.SetJson("BasketUC", basketUC);
 }