public async Task Edit_WithAddingNewAllergens_ShouldBeSuccessful() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); await SeedData(dbContext); var service = new IngredientsService(dbContext); var entityBeforeEdit = dbContext.Ingredients.First(); var countBeforeEdit = entityBeforeEdit.IngredientAllergens.Count(); var newAllergen = dbContext.Allergens.Last(); var test = new IngredientEditInputModel { Id = entityBeforeEdit.Id, AllergenNames = new List <string> { newAllergen.Name } }; var entityAfterEdit = await service.EditAsync(test); var countAfterEdit = entityAfterEdit.IngredientAllergens.Count(); Assert.True(countAfterEdit == (countBeforeEdit + 1)); }
public async Task <IActionResult> Edit(IngredientEditInputModel model) { if (!ModelState.IsValid) { this.ViewData["allergens"] = this.allergensService.GetAllToViewModel <IngredientCreateAllergenViewModel>(); return(this.View(model)); } if (model.NewImageFile != null && model.NewImageFile.Length != 0) { if (model.ImagePath != null) { model.ImagePath = this.imageService.ReplaceImage(model.NewImageFile, model.ImagePath, model.Name); } else { model.ImagePath = this.imageService.UploadImage(model.NewImageFile, model.Name); } } var ingredient = await this.ingredientService.EditAsync(model); if (ingredient == null) { throw new NullReferenceException(); } return(this.RedirectToAction("Details", new { id = ingredient.Id })); }
public async Task GetViewModelById_ShouldReturnNull_IfIdDoesntExists() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); IngredientEditInputModel actual = await service.GetViewModelByIdAsync <IngredientEditInputModel>(1); Assert.True(actual == null); }
public async Task <Ingredient> EditAsync(IngredientEditInputModel model) { var ingredientFromDb = this.dbContext.Ingredients .Include(x => x.IngredientAllergens) .FirstOrDefault(x => x.Id == model.Id); if (ingredientFromDb == null) { return(null); } ingredientFromDb.Name = model.Name; ingredientFromDb.Description = model.Description; ingredientFromDb.ImagePath = model.ImagePath; ingredientFromDb.ModifiedOn = DateTime.UtcNow; if (model.AllergenNames != null) { var oldallergens = this.dbContext.IngredientAllergen .Include(x => x.Allergen) .Where(x => x.IngredientId == ingredientFromDb.Id) .ToList(); foreach (var item in model.AllergenNames) { if (item == "RemoveOlds") { this.dbContext.RemoveRange(); continue; } var allergen = this.dbContext.Allergens.FirstOrDefault(x => x.Name == item); if (allergen == null) { continue; } IngredientAllergen ingredientAllergen = new IngredientAllergen { Ingredient = ingredientFromDb, Allergen = allergen, }; if (oldallergens.Select(x => x.Allergen).Contains(allergen)) { continue; } ingredientAllergen = this.dbContext.IngredientAllergen.Add(ingredientAllergen).Entity; } } await this.dbContext.SaveChangesAsync(); return(ingredientFromDb); }
public async Task Edit_WithNonExistingId_ShouldReturnNull() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); var service = new IngredientsService(dbContext); var tested = new IngredientEditInputModel { Id = 1 }; var result = await service.EditAsync(tested); Assert.Null(result); }
public async Task GetViewModelByIdShouldReturnCorrectViewModel() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); await SeedData(dbContext); IngredientEditInputModel expectedVM = dbContext.Ingredients.First().To <IngredientEditInputModel>(); var service = new IngredientsService(dbContext); IngredientEditInputModel actual = await service.GetViewModelByIdAsync <IngredientEditInputModel>(expectedVM.Id); Assert.IsType <IngredientEditInputModel>(actual); }
public async Task Edit_WithExistingId_ShouldReturnTheRightResult() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); await SeedData(dbContext); var service = new IngredientsService(dbContext); var actual = dbContext.Ingredients.First(); var tested = new IngredientEditInputModel { Id = actual.Id }; var result = await service.EditAsync(tested); Assert.True(actual.Id == result.Id); }
public async Task Edit_WithNoNewAllergens_ShouldNotChangeTheOldOnes() { var dbContext = WantoeatDbContextInMemoryFactory.InitializeContext(); await SeedData(dbContext); var service = new IngredientsService(dbContext); var actual = dbContext.Ingredients.First(); actual.Name = "Wheat flour"; actual.ImagePath = "www"; await dbContext.SaveChangesAsync(); var tested = new IngredientEditInputModel { Id = actual.Id }; var result = await service.EditAsync(tested); Assert.True(actual.IngredientAllergens.Count() == result.IngredientAllergens.Count()); }