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 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 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());
        }