public void GetByNameThatDoesntExistsReturnsNull()
        {
            string name = "Not existing name";

            // arrange (use the context directly - we assume that works)
            var options = new DbContextOptionsBuilder <Project1Context>()
                          .UseInMemoryDatabase("db_pizza_test_getByName_List_Wrong").Options;

            using (var db = new Project1Context(options));

            // act (for act, only use the repo, to test it)
            using (var db = new Project1Context(options))
            {
                var repo = new PizzaRepository(db);

                Pizzas Pizza = new Pizzas
                {
                    Name  = "Name Pizza 1",
                    Price = 20,
                };
                repo.Save(Pizza);

                Pizza = new Pizzas
                {
                    Name  = "Name Pizza 2",
                    Price = 20,
                };
                repo.Save(Pizza);

                Pizza = new Pizzas
                {
                    Name  = "Name Pizza 3",
                    Price = 20,
                };
                repo.Save(Pizza);

                repo.SaveChanges();
            }

            // assert (for assert, once again use the context directly for verify.)
            using (var db = new Project1Context(options))
            {
                var           repo = new PizzaRepository(db);
                List <Pizzas> list = (List <Pizzas>)repo.GetByName(name);

                Assert.Empty(list);
            }
        }
        public void GetByNameWorks()
        {
            List <Pizzas> inserted  = new List <Pizzas>();
            string        name      = "Test";
            string        wrongName = "Name";
            int           id        = 0;

            // arrange (use the context directly - we assume that works)
            var options = new DbContextOptionsBuilder <Project1Context>()
                          .UseInMemoryDatabase("db_pizza_test_getByName_List").Options;

            using (var db = new Project1Context(options));

            // act (for act, only use the repo, to test it)
            using (var db = new Project1Context(options))
            {
                var repo = new PizzaRepository(db);
                var ingredientRepository = new IngredientRepository(db);

                Ingredients ingredient = new Ingredients()
                {
                    Name = "Ingredient", Stock = 10
                };
                ingredientRepository.Save(ingredient);
                ingredientRepository.SaveChanges();

                Pizzas Pizza = new Pizzas {
                    Name  = "Test Pizza 1",
                    Price = 20,
                };
                Pizza.PizzasIngredients.Add(new PizzasIngredients()
                {
                    IngredientId = ingredient.Id
                });
                repo.Save(Pizza);
                inserted.Add(Pizza);

                Pizza = new Pizzas
                {
                    Name  = "Name Pizza 2",
                    Price = 20,
                };
                Pizza.PizzasIngredients.Add(new PizzasIngredients()
                {
                    IngredientId = ingredient.Id
                });
                repo.Save(Pizza);
                inserted.Add(Pizza);

                Pizza = new Pizzas
                {
                    Name  = "Test Pizza 3",
                    Price = 20,
                };
                Pizza.PizzasIngredients.Add(new PizzasIngredients()
                {
                    IngredientId = ingredient.Id
                });
                repo.Save(Pizza);
                inserted.Add(Pizza);

                repo.SaveChanges();
            }

            // assert (for assert, once again use the context directly for verify.)
            using (var db = new Project1Context(options))
            {
                var           repo = new PizzaRepository(db);
                List <Pizzas> list = (List <Pizzas>)repo.GetByName(name);

                Assert.Equal(2, list.Count);

                foreach (Pizzas Pizza in list)
                {
                    Assert.NotEqual(0, Pizza.Id);
                    Assert.DoesNotContain(wrongName, Pizza.Name);
                    Assert.Contains(name, Pizza.Name);
                    Assert.Equal(20, Pizza.Price);
                }
            }
        }