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);
        }
Пример #3
0
        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 }));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }