示例#1
0
        public async Task TestSingleIngredient()
        {
            var ingredient = new Ingredient()
            {
                IngredientId          = 3,
                IngredientName        = "Cheese",
                IngredientDescription = "svsvsvs",
                IngredientImage       = "Some Image",
                RecipeIngredients     = new List <RecipeIngredient>(),
                ThirdPartyApiId       = "Google",
            };
            var result2 = new Ingredient();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                context.Add(ingredient);
                context.SaveChangesAsync();
            }
            await using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreated();
                var msr = new ReviewStepTagLogic(context);
                result2 = await msr.getOneIngredientById(ingredient.IngredientId);
            }
            Assert.Equal(ingredient.IngredientDescription, result2.IngredientDescription);
        }
示例#2
0
        public async Task TestIngredient()
        {
            var ingredient = new Ingredient()
            {
                IngredientId   = 34,
                IngredientName = "Cheese"
            };
            var result1 = new Ingredient();
            var result2 = new Ingredient();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                context.Add(ingredient);
                context.SaveChanges();
                result2 = await context.Ingredients.Where(i => i.IngredientName == ingredient.IngredientName).FirstOrDefaultAsync();
            }

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureCreatedAsync();

                var msr = new ReviewStepTagLogic(context);

                result1 = await msr.getOneIngredientByName(ingredient.IngredientName);
            }


            Assert.Equal(result1.IngredientName, result2.IngredientName);
        }
示例#3
0
        public void GetUserBySub()
        {
            var user = new User()
            {
                UserId = 4, Username = "******", Auth0 = "Stuff"
            };

            var result1 = new User();
            var result2 = new User();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                context.Add(user);
                context.SaveChanges();

                result2 = context.Users.FirstOrDefault(u => u.Auth0 == user.Auth0);
            }

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreated();
                var msr = new KitchenRepository(context);
                result1 = msr.GetUserDataBySub(user.Auth0);
            }

            Assert.Equal(result1.Username, result2.Username);
        }
示例#4
0
        public void  GetRecipeByID()
        {
            var recipe = new Recipe()
            {
                RecipeId = 4, RecipeAuthor = "Anis"
            };


            var result1 = new Recipe();
            var result2 = new Recipe();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                context.Add(recipe);
                context.SaveChanges();
                result2 = context.Recipes.Where(r => r.RecipeId == recipe.RecipeId)
                          .Include(r => r.RecipeIngredients)
                          .ThenInclude(ri => ri.Ingredient)
                          .Include(r => r.RecipeTags)
                          .ThenInclude(rt => rt.Tag)
                          .Include(r => r.Steps)
                          .Include(r => r.Reviews)
                          .FirstOrDefault();
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreated();
                var msr = new KitchenRepository(context);
                result1 = msr.GetRecipeById(recipe.RecipeId);
            }

            Assert.Equal(result1.RecipeAuthor, result2.RecipeAuthor);
        }
示例#5
0
        public void TestListOfRecipeByName()
        {
            var ingredients = new List <Recipe>();

            ingredients.Add(new Recipe()
            {
                RecipeId = 32, RecipeAuthor = "Anis", RecipeName = "Tacos"
            });
            ingredients.Add(new Recipe()
            {
                RecipeId = 329, RecipeAuthor = "Nour", RecipeName = "TacoBurrito"
            });
            ingredients.Add(new Recipe()
            {
                RecipeId = 320, RecipeAuthor = "Beau", RecipeName = "Tacos"
            });

            var result1 = new List <Recipe>();
            var result2 = new List <Recipe>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var msr = new KitchenLogic(context);
                result1 = msr.getAllRecipeByRecipeName("Tacos");
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreatedAsync();
                result2 = context.Recipes.Where(r => r.RecipeName == "Tacos").ToList();
            }
            Assert.Equal(result1, result2);
        }
示例#6
0
        public async Task TestUserLogic()
        {
            User user = new User()
            {
                Auth0 = "authcode", Firstname = "fname", Lastname = "lname"
            };
            AuthModel model = new AuthModel()
            {
                Sub          = "authcode",
                FirstName    = "fname",
                LastName     = "lname",
                Email        = "email",
                ProfileImage = "",
                Username     = "******"
            };
            Dictionary <string, string> userDictionary = new Dictionary <string, string>();

            userDictionary["email"]   = "email";
            userDictionary["picture"] = "picture";
            userDictionary["sub"]     = "authcode";
            bool result;
            bool isnew = false;

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var       repo      = new KitchenRepository(context);
                var       userlogic = new UserLogic(context, repo);
                AuthModel outModel  = null;
                isnew = userlogic.CheckIfNewUser(userDictionary, out outModel);
                userlogic.GetAllUsers();
            }
            Assert.False(isnew);
        }
示例#7
0
        public async Task TestSingleTag()
        {
            {
                var tag = new Tag()
                {
                    TagId          = 4,
                    TagName        = "Chee",
                    TagDescription = "SomeSTuff",
                    RecipeTags     = new List <RecipeTag>()
                    {
                    }
                };
                var result1 = new Tag();
                var result2 = new Tag();

                await using (var context = new InTheKitchenDBContext(testOptions))
                {
                    await context.Database.EnsureDeletedAsync();

                    await context.Database.EnsureCreatedAsync();

                    var msr = new KitchenLogic(context);
                    result1 = await msr.getOneTag(tag.TagName);
                }
                await using (var context2 = new InTheKitchenDBContext(testOptions))
                {
                    await context2.Database.EnsureCreatedAsync();

                    result2 = await context2.Tags.FirstOrDefaultAsync(t => t.TagName == tag.TagName);
                }
                Assert.Equal(result1, result2);
            }
        }
示例#8
0
        public async Task TestRecipe()
        {
            var recipeResult = new Recipe()
            {
                RecipeId     = 2377,
                RecipeName   = "Cheese",
                RecipeAuthor = "Anis"
            };

            var result1 = new Recipe();
            var result2 = new Recipe();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var msr = new KitchenLogic(context);
                result1 = await msr.addNewRecipe(recipeResult);
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreatedAsync();
                context.Recipes.AddAsync(recipeResult);
                context.SaveChangesAsync();
                result2 = await context.Recipes.Where(r => r.RecipeName == recipeResult.RecipeName).FirstOrDefaultAsync();
            }
            Assert.Equal(result1, result2);
        }
示例#9
0
        public async Task TestListRecipeByTag()
        {
            var tag = new Tag()
            {
                TagId = 3, TagName = "Healthy"
            };
            var recipe = new Recipe()
            {
                RecipeId = 21, RecipeName = "Deli"
            };
            ICollection <RecipeTag> tags = new List <RecipeTag>();

            tags.Add(new RecipeTag()
            {
                Recipe = recipe, Tag = tag
            });
            tags.Add(new RecipeTag()
            {
                Recipe = recipe, Tag = tag
            });

            var ingredients = new List <Recipe>();

            ingredients.Add(new Recipe()
            {
                RecipeId = 32, RecipeAuthor = "Anis", RecipeName = "Tacos", RecipeTags = tags
            });
            ingredients.Add(new Recipe()
            {
                RecipeId = 329, RecipeAuthor = "Nour", RecipeName = "TacoBurrito", RecipeTags = tags
            });
            ingredients.Add(new Recipe()
            {
                RecipeId = 320, RecipeAuthor = "Beau", RecipeName = "Tacos", RecipeTags = tags
            });

            var result1 = new List <Recipe>();
            var result2 = new List <Recipe>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var msr = new KitchenLogic(context);
                result1 = await msr.getAllRecipeByTags("Spicy");
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureCreatedAsync();

                result2 = await context.Recipes.FromSqlRaw("$SELECT * FROM Recipes WHERE RecipeId IN (SELECT RecipeId FROM RecipeTags WHERE TagId = 3)").ToListAsync();
            }
            Assert.Equal(result1, result2);
        }
示例#10
0
        public async Task TestListReviewByName()
        {
            var reviews = new List <Review>();
            var review1 = new Review()
            {
                ReviewId = 12, Recipe = new Recipe()
                {
                    RecipeName = "Tacos"
                }, ReviewDescription = "Some description", User = new User()
                {
                    Firstname = "Anis"
                }
            };
            var review2 = new Review()
            {
                ReviewId = 120, Recipe = new Recipe()
                {
                    RecipeName = "Tacos"
                }, ReviewDescription = "Some other description", User = new User()
                {
                    Firstname = "Anis"
                }
            };

            reviews.Add(review1);
            reviews.Add(review2);

            var result1 = new List <Review>();
            var result2 = new List <Review>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                var msr = new ReviewStepTagLogic(context);
                result1 = await msr.getReviewByUser("Anis");
            }

            await using (var context2 = new InTheKitchenDBContext(testOptions))
            {
                await context2.Database.EnsureCreatedAsync();

                result2 = await context2.Reviews.Include(r => r.User).Where(r => r.User.Firstname == "Anis").ToListAsync();
            }
            Assert.Equal(result1, result2);
        }
示例#11
0
        public async Task TestListTagByTagName()
        {
            var tag = new Tag()
            {
                TagId = 123, TagName = "Cheese"
            };
            bool result;

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var msr = new KitchenLogic(context);
                result = await msr.existTag(tag.TagName);
            }
            Assert.False(result);
        }
示例#12
0
        public void TestRecipeExist()
        {
            var recipe = new Recipe()
            {
                RecipeId = 13123, RecipeName = "Cheese"
            };



            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var  msr    = new KitchenLogic(context);
                bool result = msr.existRecipeName(recipe.RecipeName);
                Assert.False(result);
            }
        }
示例#13
0
        public void  GetRecipes()
        {
            var reviews = new List <Recipe>();
            var review1 = new Recipe()
            {
                RecipeId = 32, RecipeAuthor = "Anis", RecipeDescription = "Tacos"
            };
            var review2 = new Recipe()
            {
                RecipeId = 320, RecipeAuthor = "Anis", RecipeDescription = "Tacos"
            };

            reviews.Add(review1);
            reviews.Add(review2);


            var result1 = new List <Recipe>();
            var result2 = new List <Recipe>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                context.Add(review1);
                context.Add(review2);
                context.SaveChanges();
                result2 = context.Recipes
                          .Include(r => r.RecipeIngredients)
                          .ThenInclude(ri => ri.Ingredient)
                          .Include(r => r.RecipeTags)
                          .ThenInclude(rt => rt.Tag)
                          .Include(r => r.Steps)
                          .ToList();
            }

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreatedAsync();
                var msr = new KitchenRepository(context);
                result1 = (List <Recipe>)msr.GetAllRecipes();
            }

            Assert.Equal(result1.Count, result2.Count);
        }
示例#14
0
        public void SaveUser()
        {
            var user = new User()
            {
                UserId = 4, Username = "******", Auth0 = "Stuff"
            };

            var result1 = new User();
            var result2 = new User();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                var msr     = new KitchenRepository(context);
                var newUser = msr.SaveNewUser(user, out result1);
                Assert.True(newUser);
            }
        }
示例#15
0
        public void TestListUser()
        {
            List <User> users = new List <User>();
            var         user1 = (new User()
            {
                UserId = 23, Firstname = "Anis"
            });
            var user2         = (new User()
            {
                UserId = 234, Firstname = "Nour"
            });
            var user3         = (new User()
            {
                UserId = 231, Firstname = "Beau"
            });

            users.Add(user1);
            users.Add(user2);
            users.Add(user3);

            List <User> result1 = new List <User>();
            List <User> result2 = new List <User>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                context.Add(user1);
                context.Add(user2);
                context.Add(user3);
                context.SaveChanges();

                result2 = context.Users.ToList();
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreated();
                var msr = new UserLogic(context);
                result1 = msr.getAllUsers();
            }

            Assert.Equal(result1.Count, result2.Count);
        }
示例#16
0
        public async Task TestListReview()
        {
            var reviews = new List <Review>();
            var review1 = new Review()
            {
                ReviewId = 12, Recipe = new Recipe()
                {
                    RecipeName = "Tacos"
                }, ReviewDescription = "Some description"
            };
            var review2 = new Review()
            {
                ReviewId = 120, Recipe = new Recipe()
                {
                    RecipeName = "Tacos"
                }, ReviewDescription = "Some other description"
            };

            reviews.Add(review1);
            reviews.Add(review2);

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                context.Add(review1);
                context.Add(review2);
                context.SaveChanges();
            }
            List <Review> result1;

            using (var context2 = new InTheKitchenDBContext(testOptions))
            {
                context2.Database.EnsureCreated();
                var msr = new ReviewStepTagLogic(context2);
                result1 = await msr.getReviewsByRecipeName("Tacos");
            }

            Assert.Equal(reviews.Count, result1.Count);
        }
示例#17
0
        public async Task TestListTag()
        {
            var tags = new List <Tag>();
            var tag1 = (new Tag()
            {
                TagId = 12, TagName = "Cheese", TagDescription = "Some description"
            });
            var tag2 = (new Tag()
            {
                TagId = 120, TagName = "Beef", TagDescription = "Some other description"
            });

            tags.Add(tag1);
            tags.Add(tag2);

            var result1 = new List <Tag>();
            var result2 = new List <Tag>();

            await using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureDeletedAsync();

                await context.Database.EnsureCreatedAsync();

                context.Add(tag1);
                context.Add(tag2);
                context.SaveChanges();
                result2 = await context.Tags.ToListAsync();
            }
            await using (var context = new InTheKitchenDBContext(testOptions))
            {
                await context.Database.EnsureCreatedAsync();

                var msr = new ReviewStepTagLogic(context);
                result1 = await msr.geTags();
            }

            Assert.Equal(result1.Count, result2.Count);
        }
示例#18
0
        public async Task GetReviews()
        {
            var reviews = new List <Review>();
            var review1 = new Review()
            {
                RecipeId = 32, ReviewId = 3, ReviewDescription = "Tacos"
            };
            var review2 = new Review()
            {
                RecipeId = 329, ReviewId = 3, ReviewDescription = "TacoBurrito"
            };
            var review3 = new Review()
            {
                RecipeId = 320, ReviewId = 3, ReviewDescription = "Tacos"
            };

            var result1 = new List <Review>();
            var result2 = new List <Review>();

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
                result2 = await context.Reviews.Where(r => r.RecipeId == 3)
                          .Include(r => r.User)
                          .ToListAsync();
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreated();
                var msr = new KitchenRepository(context);
                result1 = await msr.GetReviewsByRecipeId(3);
            }

            Assert.Equal(result1, result2);
        }
示例#19
0
        public async Task TestListIngredient()
        {
            var ingredients = new List <Ingredient>();
            var ing1        = new Ingredient()
            {
                IngredientId = 12, IngredientName = "Cheese", IngredientDescription = "Some description"
            };
            var ing2 = new Ingredient()
            {
                IngredientId = 120, IngredientName = "Beef", IngredientDescription = "Some other description"
            };

            ingredients.Add(ing2);
            ingredients.Add(ing1);

            var result1 = new List <Ingredient>();


            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                context.Add(ing1);
                context.Add(ing2);
                context.SaveChanges();
            }
            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureCreatedAsync();
                var msr = new ReviewStepTagLogic(context);
                result1 = await msr.getIngredients();
            }


            Assert.Equal(result1.Count, ingredients.Count);
        }
示例#20
0
 // for test purpose
 public UserLogic(InTheKitchenDBContext _context)
 {
     this._context = _context;
 }
示例#21
0
 public UserLogic(InTheKitchenDBContext _context, KitchenRepository _repo)
 {
     this._context = _context;
     this._repo    = _repo;
     // this._handler = _handler;
 }
示例#22
0
 public KitchenLogic(InTheKitchenDBContext _context, KitchenRepository _repo)
 {
     this._context = _context;
     this._repo    = _repo;
 }
示例#23
0
 public KitchenRepository(InTheKitchenDBContext context)
 {
     _context = context;
 }
 public ReviewStepTagLogic(InTheKitchenDBContext _context)
 {
     this._context = _context;
 }
 public ReviewStepTagLogic(InTheKitchenDBContext _context, KitchenRepository _repo)
 {
     this._context = _context;
     this._repo    = _repo;
 }
示例#26
0
        public async Task TestRecipeSaving()
        {
            // var tag = new Recipe() { TagId = 123, TagName = "Cheese" };
            var sentrecipe = new SentRecipe();
            var date       = DateTime.Now;

            sentrecipe.DateCreated      = date;
            sentrecipe.DateLastPrepared = date;
            Tag t = new Tag()
            {
                TagName = "tag name 2"
            };
            Ingredient i = new Ingredient()
            {
                IngredientName = "ing name 2"
            };
            Step s = new Step()
            {
                StepDescription = "new description",
                RecipeStepNo    = 1
            };

            sentrecipe.ingredients = new List <Ingredient>()
            {
                new Ingredient()
                {
                    IngredientName = "ingredient name"
                }
            };
            sentrecipe.tags = new List <Tag>()
            {
                new Tag()
                {
                    TagName = "tag name"
                }
            };
            Step s1 = new Step()
            {
                StepDescription = "step description"
            };

            sentrecipe.Steps = new List <Step>()
            {
                s1
            };

            User user = new User()
            {
                Auth0       = "authcode",
                Firstname   = "fname",
                Lastname    = "lname",
                DateCreated = date,
                Email       = "email",
                ImageUrl    = "picture"
            };
            AuthModel model = new AuthModel()
            {
                Sub          = "authcode",
                FirstName    = "fname",
                LastName     = "lname",
                Email        = "email",
                ProfileImage = "picture",
                Username     = "******"
            };

            Dictionary <string, string> userDictionary = new Dictionary <string, string>();

            userDictionary["email"]   = "email";
            userDictionary["picture"] = "picture";
            userDictionary["sub"]     = "authcode";


            bool   result;
            Recipe recipe = null;

            using (var context = new InTheKitchenDBContext(testOptions))
            {
                context.Database.EnsureDeletedAsync();
                context.Database.EnsureCreatedAsync();
                var repo        = new KitchenRepository(context);
                var msr         = new KitchenLogic(context, repo);
                var reviewlogic = new ReviewStepTagLogic(context, repo);
                var userlogic   = new UserLogic(context, repo);
                userlogic.UpdateUser(model, userDictionary);
                userlogic.UpdateUser(model, userDictionary);
                var sr = await msr.saveRecipe(sentrecipe, model.Sub);

                sentrecipe.tags.Add(t);
                sentrecipe.ingredients.Add(i);
                sentrecipe.Steps.Add(s);
                sentrecipe.Steps.Remove(s1);
                sr = await msr.saveRecipe(sentrecipe, model.Sub);

                recipe = repo.GetRecipeById(sr.RecipeId);
                repo.UpdateUserAuth0Data(user);
                var rev = new Review()
                {
                    Recipe            = recipe,
                    ReviewDate        = date,
                    ReviewDescription = "review description",
                    RecipeId          = recipe.RecipeId,
                };
                reviewlogic.addReview(userDictionary["sub"], rev);
                HistoryModel hmodel = new HistoryModel()
                {
                    recipeId = recipe.RecipeId,
                    sub      = model.Sub
                };
                msr.SaveRecipePrepare(hmodel);
            }
            Assert.Equal(recipe.RecipeTags.ToArray()[0].Tag.TagName, "tag name");
        }