public async Task Create_WithExistingAndNonExistingAllergens_ShouldReturnNull() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); var allergenGluten = new Allergen { Name = "Gluten" }; dbContext.Add(allergenGluten); await dbContext.SaveChangesAsync(); var ingredientVM = new IngredientCreateInputModel { Name = "Flour", AllergenIds = new List <int> { allergenGluten.Id, 2 } }; var actual = await service.CreateAsync(ingredientVM); Assert.True(actual == null); }
public async Task Create_WithExistingAllergens_ShouldCreateAlsoRelationToAllergens() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); var allergenGluten = new Allergen { Name = "Gluten" }; var allergenLupin = new Allergen { Name = "Lupin" }; dbContext.Add(allergenGluten); dbContext.Add(allergenLupin); await dbContext.SaveChangesAsync(); var ingredientVM = new IngredientCreateInputModel { Name = "Flour", AllergenIds = new List <int> { allergenGluten.Id, allergenLupin.Id } }; var actual = await service.CreateAsync(ingredientVM); Assert.True(actual.IngredientAllergens.Count == 2); }
public async Task <IActionResult> Create(IngredientCreateInputModel model) { if (!ModelState.IsValid) { if (model.AllergenIds == null) { var allergens = this.allergensService.AllToSelectListItems().ToList(); model.Allergens = allergens; } return(this.View(model)); } if (model.ImageFile != null && model.ImageFile.Length != 0) { model.ImagePath = this.imageService.UploadImage(model.ImageFile, model.Name); } var ingredient = await this.ingredientService.CreateAsync(model); if (ingredient == null) { throw new NullReferenceException(); } return(this.RedirectToAction("Details", new { id = ingredient.Id })); }
public async Task <Ingredient> CreateAsync(IngredientCreateInputModel model) { var ingredient = AutoMapper.Mapper.Map <Ingredient>(model); if (model.AllergenIds != null) { foreach (var item in model.AllergenIds) { var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Id == item); if (allergen == null) { return(null); } IngredientAllergen ingredientAllergen = new IngredientAllergen { IngredientId = ingredient.Id, AllergenId = item, Allergen = allergen, }; ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity; ingredient.IngredientAllergens.Add(ingredientAllergen); } } ingredient = this.dbContext.Ingredients.Add(ingredient).Entity; await this.dbContext.SaveChangesAsync(); return(ingredient); }
public async Task <IActionResult> Create() { var allergens = this.allergensService.AllToSelectListItems().ToList(); var model = new IngredientCreateInputModel { Allergens = allergens }; return(this.View(model)); }
public async Task Create_FromViewModel_ShouldReturnRightType() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); var ingredientVM = new IngredientCreateInputModel { Name = "Flour" }; Ingredient actual = await service.CreateAsync(ingredientVM); Assert.IsType <Ingredient>(actual); }
public async Task Create_WithoutAllergens_ShouldBeSucessfull() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); var ingredientVM = new IngredientCreateInputModel { Name = "Flour" }; var craeted = await service.CreateAsync(ingredientVM); Assert.NotNull(craeted); }