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); }
public MealTO Add(MealTO Entity) { //if (!mealContext.Meals.Any(x => x.Id == Entity.Id)) return(mealContext.Meals .Add(Entity.ToEF()) .Entity .ToTranfertsObject()); }
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)); } }
//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 }); }
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)); } }
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); } }
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); } }
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); }
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()); }
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); }
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); } }
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); }
public bool Remove(MealTO Entity) => Remove(Entity.Id);
public void Delete(MealTO entityToDelete) { Context.Meals.Remove(entityToDelete.ToEF()); }
public void Update(MealTO entityToUpdate) { Context.Meals.Update(entityToUpdate.ToEF()); }
public void Insert(MealTO entity) { Update(entity); }