Пример #1
0
        public static MealEF ToEF(this MealTO mealTO)
        {
            if (mealTO is null)
            {
                throw new ArgumentNullException(nameof(mealTO));
            }

            var mealEF = new MealEF
            {
                Id          = mealTO.Id,
                MealType    = mealTO.MealType,
                NameEnglish = mealTO.Name.English,
                NameFrench  = mealTO.Name.French,
                NameDutch   = mealTO.Name.Dutch,
                Supplier    = mealTO.Supplier.ToEF()
            };

            mealEF.MealCompositions = mealTO.Ingredients?.Select(x => new MealCompositionEF
            {
                Ingredient   = x.ToEF(),
                IngredientId = x.Id,
                Meal         = mealEF,
                MealId       = mealTO.Id
            }).ToList();
            return(mealEF);
        }
Пример #2
0
 public MealTO Add(MealTO Entity)
 {
     //if (!mealContext.Meals.Any(x => x.Id == Entity.Id))
     return(mealContext.Meals
            .Add(Entity.ToEF())
            .Entity
            .ToTranfertsObject());
 }
Пример #3
0
        public void IRepositoryDeleteByTransfertObject_ShouldDelete_WhenValidTOIsProvided()
        {
            //ASSERT
            var options = new DbContextOptionsBuilder <MealContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var memoryCtx = new MealContext(options))
            {
                //ARRANGE
                var MealToUseInTest1 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal1EN", "Meal1FR", "Meal1NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 1,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var MealToUseInTest2 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal2EN", "Meal2FR", "Meal2NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 2,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var mealRepository = new MealRepository(memoryCtx);

                //ACT
                mealRepository.Add(MealToUseInTest1);
                mealRepository.Add(MealToUseInTest2);
                memoryCtx.SaveChanges();
                MealToUseInTest2.Id = 2;
                mealRepository.Remove(MealToUseInTest2);
                memoryCtx.SaveChanges();

                var retrievedMeals = mealRepository.GetAll();

                Assert.AreEqual(1, retrievedMeals.Count());
                Assert.IsFalse(retrievedMeals.Any(x => x.Id == 2));
            }
        }
Пример #4
0
        //public static MealTO ToBTO(this Meal Meal, Language Langue)
        //{
        //    return new MealTO
        //    {
        //        Id = Meal.Id,
        //        Name = Meal.ToString(Langue),
        //        Ingredients = String.Join(" - ", Meal.Ingredients.Select(x => x.ToString(Langue))),
        //        //Supplier = Meal.Supplier.ToTransfertObject()
        //    };
        //}

        public static Meal ToDomain(this MealTO MealTO)
        {
            return(new Meal(MealTO.Name, MealTO.Supplier.ToDomain())
            {
                Id = MealTO.Id,
                Ingredients = MealTO.Ingredients.Select(x => x.ToDomain()).ToList(),
                MealType = MealTO.MealType
            });
        }
Пример #5
0
        public void IRepositoryDeleteByTranfertObject_ShouldThrowException_WhenDeletingANonExistantMeal()
        {
            //ASSERT
            var options = new DbContextOptionsBuilder <MealContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var memoryCtx = new MealContext(options))
            {
                //ARRANGE
                var MealToUseInTest1 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal1EN", "Meal1FR", "Meal1NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 1,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var MealToUseInTest2 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal2EN", "Meal2FR", "Meal2NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 2,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var mealRepository = new MealRepository(memoryCtx);

                //ACT
                mealRepository.Add(MealToUseInTest1);
                mealRepository.Add(MealToUseInTest2);
                memoryCtx.SaveChanges();
                MealToUseInTest2.Id = 2;
                mealRepository.Remove(MealToUseInTest2);
                memoryCtx.SaveChanges();

                //ASSERT
                Assert.ThrowsException <Exception>(() => mealRepository.Remove(MealToUseInTest2));
            }
        }
Пример #6
0
        public void IRepositoryGetAll_ShouldRetrieveMeals_WhenCalled()
        {
            //ASSERT
            var options = new DbContextOptionsBuilder <MealContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var memoryCtx = new MealContext(options))
            {
                //ARRANGE
                var MealToUseInTest1 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal1EN", "Meal1FR", "Meal1NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 1,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var MealToUseInTest2 = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal2EN", "Meal2FR", "Meal2NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 2,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var mealRepository = new MealRepository(memoryCtx);

                //ACT
                mealRepository.Add(MealToUseInTest1);
                mealRepository.Add(MealToUseInTest2);
                memoryCtx.SaveChanges();

                var retrievedMeals = mealRepository.GetAll();

                Assert.AreEqual(2, retrievedMeals.Count());
                Assert.AreEqual(1, retrievedMeals.FirstOrDefault().Id);
            }
        }
Пример #7
0
        public void IRepositoryUpdate_ShouldUpdateInDb_WhenValidMealIsProvided()
        {
            var options = new DbContextOptionsBuilder <MealContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var memoryCtx = new MealContext(options))
            {
                //ARRANGE
                var MealToUseInTest = new MealTO
                {
                    Id          = 1,
                    Name        = new MultiLanguageString("Meal1EN", "Meal1FR", "Meal1NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 2,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Salad
                };

                var mealRepository = new MealRepository(memoryCtx);

                //ACT
                mealRepository.Add(MealToUseInTest);
                memoryCtx.SaveChanges();
                //MealToUseInTest.Id = 1;
                MealToUseInTest.MealType = MealType.Sandwich;
                mealRepository.Update(MealToUseInTest);
                memoryCtx.SaveChanges();

                var MealToAssert = mealRepository.GetById(1);
                //ASSERT
                Assert.AreEqual(1, mealRepository.GetAll().Count());
                Assert.AreEqual(1, MealToAssert.Id);
                Assert.AreEqual(2, MealToAssert.Ingredients.FirstOrDefault().Id);
                Assert.AreEqual("Meal1EN", MealToAssert.Name.English);
                Assert.AreEqual(MealType.Sandwich, MealToAssert.MealType);
            }
        }
Пример #8
0
        public static Meal ToDomain(this MealTO mealTO)
        {
            if (mealTO is null)
            {
                throw new ArgumentNullException(nameof(mealTO));
            }

            var meal = new Meal
            {
                Id          = mealTO.Id,
                MealType    = mealTO.MealType,
                Name        = mealTO.Name,
                Supplier    = mealTO.Supplier.ToDomain(),
                Ingredients = mealTO.Ingredients?.Select(x => x.ToDomain()).ToList()
            };

            meal.CheckValidity();

            return(meal);
        }
Пример #9
0
        public MealTO Update(MealTO Entity)
        {
            if (!mealContext.Meals.Any(x => x.Id == Entity.Id))
            {
                throw new Exception($"MealRepository. Update(MealTransfertObject) no record to update.");
            }

            var attachedMeal = mealContext.Meals
                               .Include(x => x.MealsComposition)
                               .ThenInclude(x => x.Ingredient)
                               .FirstOrDefault(x => x.Id == Entity.Id);

            if (attachedMeal != default)
            {
                attachedMeal.UpdateFromDetached(Entity.ToEF());
                //attachedMeal.MealsComposition = attachedMeal.MealsComposition
                //    .ToList()
                //    .UpdateListFromDetached(Entity.ToEF().MealsComposition.ToList());
            }

            return(mealContext.Meals.Update(attachedMeal).Entity.ToTranfertsObject());
        }
Пример #10
0
        public static MealEF ToEF(this MealTO Meal)
        {
            if (Meal is null)
            {
                throw new ArgumentNullException(nameof(Meal));
            }

            var ReturnValue = new MealEF()
            {
                Id = Meal.Id,

                Supplier         = Meal.Supplier.ToEF(),
                MealType         = Meal.MealType,
                MealsComposition = new List <MealCompositionEF>()

                                   //Ingredients = MealTO.Ingredients.Select(x => x.ToEF()).ToList()
            };

            ReturnValue = ReturnValue.FillFromMultiLanguageString(Meal.Name);


            //TODO IngredientsTO to MealComposition Extention to use as
            // andwichDTO.Ingredients.Select(x => x.ToMealCompositionEF()).ToList()??? or method in this file as toMEalComposition...
            foreach (var i in Meal.Ingredients)
            {
                ReturnValue.MealsComposition.Add(
                    new MealCompositionEF()
                {
                    IngredientId = i.Id,
                    Ingredient   = i.ToEF(),
                    MealId       = ReturnValue.Id,
                    Meal         = ReturnValue
                });
            }

            return(ReturnValue);
        }
Пример #11
0
        public void IRepositoryGetByID_ShouldRetrieveMeal_WhenValidIdIsProvided()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <MealContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using (var memoryCtx = new MealContext(options))
            {
                var MealToUseInTest = new MealTO
                {
                    Id          = 0,
                    Name        = new MultiLanguageString("Meal1EN", "Meal1FR", "Meal1NL"),
                    Ingredients = new List <IngredientTO> {
                        new IngredientTO {
                            Id   = 1,
                            Name = new MultiLanguageString("Ingr1EN", "Ingr1FR", "Ingr1NL"), IsAllergen = false
                        }
                    },
                    Supplier = new SupplierTO {
                        Name = "Fournisseur1"
                    },
                    MealType = MealType.Sandwich
                };

                var mealRepository = new MealRepository(memoryCtx);

                //ACT
                mealRepository.Add(MealToUseInTest);
                memoryCtx.SaveChanges();
                var retrivedMeal = mealRepository.GetById(1);

                //ASSERT
                Assert.AreEqual(1, retrivedMeal.Id);
                Assert.AreEqual("Meal1EN", mealRepository.GetById(1).Name.English);
            }
        }
Пример #12
0
        public static List <MealTO> GetTestsListOfMeals()
        {
            //REchercher Founisseur
            var Tomate = new IngredientTO {
                Id = 1, Name = new MultiLanguageString("Tomato", "Tomate", "Tomaat"), IsAllergen = false
            };
            var Brie = new IngredientTO {
                Id = 2, Name = new MultiLanguageString("Brie", "Brie", "Brie"), IsAllergen = true
            };
            var Fromage = new IngredientTO {
                Id = 3, Name = new MultiLanguageString("Cheese", "Fromage", "Kaas"), IsAllergen = true
            };
            var Noix = new IngredientTO {
                Id = 4, Name = new MultiLanguageString("Nuts", "Noix", "Noten"), IsAllergen = true
            };
            var Beurre = new IngredientTO {
                Id = 5, Name = new MultiLanguageString("Butter", "Beurre", "Boter"), IsAllergen = false
            };
            var Jambon = new IngredientTO {
                Id = 6, Name = new MultiLanguageString("Ham", "Jambon", "Ham"), IsAllergen = false
            };
            var Roquette = new IngredientTO {
                Id = 7, Name = new MultiLanguageString("Arugula", "Roquette", "Rucola"), IsAllergen = false
            };
            var Salade = new IngredientTO {
                Id = 8, Name = new MultiLanguageString("Salad", "Salade", "Salade"), IsAllergen = false
            };
            var Pesto = new IngredientTO {
                Id = 9, Name = new MultiLanguageString("Pesto", "Pesto", "Pesto"), IsAllergen = false
            };
            var Oeuf = new IngredientTO {
                Id = 10, Name = new MultiLanguageString("Eggs", "Oeufs", "Eien"), IsAllergen = true
            };
            var Miel = new IngredientTO {
                Id = 11, Name = new MultiLanguageString("Honey", "Miel", "Honing"), IsAllergen = false
            };

            MealTO Club = new MealTO {
                Id = 1, Name = new MultiLanguageString("ClubEN", "ClubFR", "ClubNL"), Supplier = new SupplierTO {
                    Id = 33, Name = "Supplier1"
                }, Ingredients = new List <IngredientTO>(), MealType = MealType.Sandwich
            };
            MealTO BrieNoix = new MealTO {
                Id = 2, Name = new MultiLanguageString("BrieEN", "BrieFR", "BrieNL"), Supplier = new SupplierTO {
                    Id = 33, Name = "Supplier1"
                }, Ingredients = new List <IngredientTO>(), MealType = MealType.Sandwich
            };
            MealTO PestoVerde = new MealTO {
                Id = 3, Name = new MultiLanguageString("PestoEN", "PestoFR", "PestoNL"), Supplier = new SupplierTO {
                    Id = 33, Name = "Supplier1"
                }, Ingredients = new List <IngredientTO>(), MealType = MealType.Sandwich
            };

            BrieNoix.Ingredients.Add(Brie);
            BrieNoix.Ingredients.Add(Miel);
            BrieNoix.Ingredients.Add(Noix);

            PestoVerde.Ingredients.Add(Pesto);
            PestoVerde.Ingredients.Add(Roquette);
            PestoVerde.Ingredients.Add(Oeuf);

            Club.Ingredients.Add(Jambon);
            Club.Ingredients.Add(Beurre);
            Club.Ingredients.Add(Salade);
            Club.Ingredients.Add(Fromage);
            //Rechercher la liste de meal

            var lst = new List <MealTO>();;

            lst.Add(BrieNoix);
            lst.Add(Club);
            lst.Add(PestoVerde);

            return(lst);
        }
Пример #13
0
 public bool Remove(MealTO Entity)
 => Remove(Entity.Id);
Пример #14
0
 public void Delete(MealTO entityToDelete)
 {
     Context.Meals.Remove(entityToDelete.ToEF());
 }
Пример #15
0
 public void Update(MealTO entityToUpdate)
 {
     Context.Meals.Update(entityToUpdate.ToEF());
 }
Пример #16
0
 public void Insert(MealTO entity)
 {
     Update(entity);
 }