public void EditOwnRestaurantMeal_WithNewCorrectData_ShouldChangeMeal_And_Return200OK()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                          .First(m => m.Restaurant.Owner.UserName == TestUserUsername);
            var type = context.MealTypes.First(t => t.Id != ownMeal.TypeId);

            var newName  = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                                                       DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));
            var newType = type.Name;

            // Act
            this.SetAuthorizationHeaders(true);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, type.Id);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var meal = response.Content.ReadAsAsync <MealViewModel>().Result;

            Assert.AreEqual(newName, meal.Name);
            Assert.AreEqual(newPrice, meal.Price);
            Assert.AreEqual(newType, meal.Type);
        }
        public static void CleanDatabase()
        {
            using (var dbContext = new RestaurantsContext())
            {
                foreach (var meal in dbContext.Meals)
                {
                    dbContext.Meals.Remove(meal);
                }

                foreach (var order in dbContext.Orders)
                {
                    dbContext.Orders.Remove(order);
                }

                foreach (var rating in dbContext.Ratings)
                {
                    dbContext.Ratings.Remove(rating);
                }

                foreach (var restaurant in dbContext.Restaurants)
                {
                    dbContext.Restaurants.Remove(restaurant);
                }
                dbContext.SaveChanges();
            }
        }
        public void EditMeal_WhenLoggedWithProperUserAndAllDataIsValid_ShouldReturnOkAndEditedMeal()
        {
            // Arrange
            var data = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("name", "Edited"),
                new KeyValuePair <string, string>("typeId", "1"),
                new KeyValuePair <string, string>("Price", "5.10"),
            });
            var context = new RestaurantsContext();
            var meal    = context.Meals.FirstOrDefault(m => m.Name == "Valid 1");

            Assert.IsNotNull(meal);

            // Act
            var response = this.EditMealByIdLogged(meal.Id, data);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            var returnedMeal = response.Content.ReadAsAsync <MealViewModel>().Result;

            Assert.AreEqual(returnedMeal.Name, "Edited");
            var type = context.MealTypes.First(t => t.Id == 1);

            Assert.AreEqual(returnedMeal.Type, type.Name);
            Assert.AreEqual(returnedMeal.Price, 5.10m);
        }
Beispiel #4
0
        public void EditNonExistingMeal_ShouldReturn404NotFound()
        {
            // Arrange
            RestaurantsContext dbContext = new RestaurantsContext();
            var restaurant = dbContext.Restaurants.FirstOrDefault();

            Meal meal = new Meal()
            {
                Name         = "Tarator",
                Price        = (decimal)1.0,
                Restaurant   = restaurant,
                RestaurantId = restaurant.Id,
                Type         = dbContext.MealTypes.Find(1),
                TypeId       = 1
            };

            dbContext.Meals.Add(meal);
            dbContext.SaveChanges();

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("name", "Shopska"),
                new KeyValuePair <string, string>("typeId", "3"),
                new KeyValuePair <string, string>("price", "1.1")
            });
            // Act
            var httpResponse = httpClient.PutAsync("/api/meals/" + meal.Id + 1, content).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode);
            Assert.AreEqual(httpResponse.Content.Headers.ContentType.MediaType, "application/json");
        }
Beispiel #5
0
        private static void ClearDatabase()
        {
            var context    = new RestaurantsContext();
            var restourans = context.Restaurants.ToList();

            while (restourans.Count != 0)
            {
                var restorant = restourans[restourans.Count - 1];
                restourans.Remove(restorant);
                context.Restaurants.Remove(restorant);
            }

            var users = context.Users.ToList();

            while (users.Count != 0)
            {
                var user = users[users.Count - 1];
                users.Remove(user);
                context.Users.Remove(user);
            }

            var meals = context.Meals.ToList();

            while (meals.Count != 0)
            {
                var meal = meals[meals.Count - 1];
                meals.Remove(meal);
                context.Meals.Remove(meal);
            }

            context.SaveChanges();
        }
        public void EditOwnRestaurantMeal_WithNewCorrectData_ShouldChangeMeal_And_Return200OK()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                .First(m => m.Restaurant.Owner.UserName == TestUserUsername);
            var type = context.MealTypes.First(t => t.Id != ownMeal.TypeId);

            var newName = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));
            var newType = type.Name;

            // Act
            this.SetAuthorizationHeaders(true);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, type.Id);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var meal = response.Content.ReadAsAsync<MealViewModel>().Result;
            Assert.AreEqual(newName, meal.Name);
            Assert.AreEqual(newPrice, meal.Price);
            Assert.AreEqual(newType, meal.Type);
        }
 public void Create(Restaurant r)
 {
     using (var db = new RestaurantsContext()) {
         db.Restaurants.Add(r);
         db.SaveChanges();
     }
 }
Beispiel #8
0
        private void SeedMeals(RestaurantsContext context, List <MealType> mealTypes)
        {
            var meals = new List <Meal>()
            {
                new Meal()
                {
                    Name       = "Chorba",
                    Price      = 5.40m,
                    Restaurant = new Restaurant()
                    {
                        Name  = "Pri baba",
                        Owner = context.Users.FirstOrDefault(u => u.UserName == TestUserUsername),
                        Town  = new Town()
                        {
                            Name = "Bracigovo"
                        }
                    },
                    Type = mealTypes.First()
                }
            };

            foreach (var meal in meals)
            {
                context.Meals.Add(meal);
            }

            context.SaveChanges();
        }
        private void SeedMeals(RestaurantsContext context, List<MealType> mealTypes)
        {
            var meals = new List<Meal>()
            {
                new Meal()
                {
                    Name = "French salad",
                    Price = 5.40m,
                    Restaurant = new Restaurant()
                    {
                        Name = "Pri baba",
                        Owner = context.Users.FirstOrDefault(u => u.UserName == TestUserUsername),
                        Town = new Town() {Name = "Bracigovo"}
                    },
                    Type = mealTypes.First()
                }
            };

            foreach (var meal in meals)
            {
                context.Meals.Add(meal);
            }

            context.SaveChanges();
        }
 public void Update(Restaurant r)
 {
     using (var db = new RestaurantsContext()) {
         db.Restaurants.Attach(r);
         db.SaveChanges();
     }
 }
        public void EditMeal_WhenDataIsValid_ShouldReturnOkAndUpdateMeal()
        {
            var loginData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("username", "pesho"),
                new KeyValuePair <string, string>("password", "123456"),
                new KeyValuePair <string, string>("grant_type", "password")
            });

            var response = httpClient.PostAsync("/api/account/login", loginData).Result;

            var token = response.Content.ReadAsAsync <LoginDto>().Result.Access_Token;

            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);

            var context       = new RestaurantsContext();
            int updatedTypeId = context.MealTypes.First(mt => mt.Name == "Updated Type").Id;
            int mealToEditId  = context.Meals.First().Id;

            var updateMealData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("name", "Updated Name"),
                new KeyValuePair <string, string>("Price", "11"),
                new KeyValuePair <string, string>("typeId", updatedTypeId.ToString())
            });

            var responsePost =
                httpClient.PutAsync("api/meals/" + mealToEditId, updateMealData).Result;

            Assert.AreEqual(HttpStatusCode.OK, responsePost.StatusCode);
        }
        public void EditNonExistingMeal_ShouldReturn404NotFound()
        {
            // Arrange
            RestaurantsContext dbContext = new RestaurantsContext();
            var restaurant = dbContext.Restaurants.FirstOrDefault();

            Meal meal = new Meal()
            {
                Name = "Tarator",
                Price = (decimal)1.0,
                Restaurant = restaurant,
                RestaurantId = restaurant.Id,
                Type = dbContext.MealTypes.Find(1),
                TypeId = 1
            };

            dbContext.Meals.Add(meal);
            dbContext.SaveChanges();

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("name", "Shopska"),
                new KeyValuePair<string, string>("typeId", "3"),
                new KeyValuePair<string, string>("price", "1.1")
            });
            // Act
            var httpResponse = httpClient.PutAsync("/api/meals/" + meal.Id + 1, content).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NotFound, httpResponse.StatusCode);
            Assert.AreEqual(httpResponse.Content.Headers.ContentType.MediaType, "application/json");
        }
Beispiel #13
0
        private static void SeedMeals(RestaurantsContext context)
        {
            var restourant = new Restaurant()
            {
                Name    = "Seed restaurant",
                OwnerId = "1",
                Ratings = new List <Rating>(),
                Town    = new Town()
                {
                    Id = 1, Name = "Town"
                }
            };

            context.Meals.Add(new Meal()
            {
                Name       = "Valid 1",
                Price      = 1,
                Restaurant = restourant,
                Type       = new MealType()
                {
                    Name = "Type 1"
                }
            });

            context.Meals.Add(new Meal()
            {
                Name       = "Valid 2",
                Price      = 2,
                Restaurant = restourant,
                Type       = new MealType()
                {
                    Name = "Type 2"
                }
            });

            context.Meals.Add(new Meal()
            {
                Name       = "Invdalid",
                Price      = 2,
                Restaurant = new Restaurant()
                {
                    Name  = "Seed restaurant2",
                    Owner = new ApplicationUser()
                    {
                        UserName = "******", PasswordHash = "212"
                    },
                    Ratings = new List <Rating>(),
                    Town    = new Town()
                    {
                        Id = 2, Name = "Town2"
                    }
                },
                Type = new MealType()
                {
                    Name = "Type 2"
                }
            });
            context.SaveChanges();
        }
        public void FilterTest()
        {
            using (var db = new RestaurantsContext()) {
                var result = db.Restaurants.FilterByName("Tchouchoura").FilterByZipCode("38000");

                Assert.IsTrue(result.Count() > 0);
            }
        }
Beispiel #15
0
        public void CreateDbTest()
        {
            var optionsBuilder = new DbContextOptionsBuilder().UseSqlServer(@"server=.\SQLEXPRESS;database=B3Restaurants;trusted_connection=true;");

            using (var db = new RestaurantsContext(optionsBuilder.Options)) {
                db.Database.EnsureCreated();
            }
        }
Beispiel #16
0
 public void BackupDatabaseToJson(string fileName, string connectionString)
 {
     using (var db = new RestaurantsContext((new DbContextOptionsBuilder().UseSqlServer(connectionString)).Options)) {
         db.Database.EnsureCreated();
         var restaurants = db.Restaurants.Include(r => r.Adresse).Include(r => r.LastGrade).ToList();
         SaveToFile(restaurants, fileName);
     }
 }
 public void EditExistingMeal_ShouldReturn200Ok_And_MealViewModel()
 {
     var db = new RestaurantsContext();
     var existingMeal = db.Meals.FirstOrDefault();
     if (existingMeal == null)
     {
         Assert.Fail("Failed to add meal to database.");
     }
 }
        public void EditMeal_NonExistingMeal_ShouldNotReturnMealForEditing()
        {
            using (var dbContext = new RestaurantsContext())
            {
                var httpTestServer = TestServer.Create(appBuilder =>
                {
                    var config = new HttpConfiguration();
                    WebApiConfig.Register(config);
                    appBuilder.UseWebApi(config);
                });

                // Arrange

                // Clean Database
                CleanDatabase();

                // Create restaurant

                var restaurant = new Restaurant()
                {
                    Id     = 1,
                    Name   = "Gurlata",
                    TownId = 1
                };

                // Create meal
                var meal = new Meal()
                {
                    Id           = 1,
                    Name         = "Shish kebab",
                    Price        = 18.2m,
                    TypeId       = 3,
                    RestaurantId = 1
                };

                // Act -> add restaurant and meal to database

                dbContext.Restaurants.Add(restaurant);
                dbContext.Meals.Add(meal);
                dbContext.SaveChanges();

                var mealWithNonExistingId = dbContext.Meals
                                            .Where(m => m.Id == meal.Id + 1);

                // Assert -> check if non existing meal returns not found

                var fakeMealId = meal.Id + 1;

                var fakeMeal = dbContext.Meals.Find(fakeMealId);

                Assert.IsNull(fakeMeal);

                CleanDatabase();
            }
        }
        public void EditMeal_NonExistingMeal_ShouldNotReturnMealForEditing()
        {
            using (var dbContext = new RestaurantsContext())
            {
                var httpTestServer = TestServer.Create(appBuilder =>
                {
                    var config = new HttpConfiguration();
                    WebApiConfig.Register(config);
                    appBuilder.UseWebApi(config);
                });

                // Arrange

                // Clean Database
                CleanDatabase();

                // Create restaurant

                var restaurant = new Restaurant()
                {
                    Id = 1,
                    Name = "Gurlata",
                    TownId = 1
                };

                // Create meal
                var meal = new Meal()
                {
                    Id = 1,
                    Name = "Shish kebab",
                    Price = 18.2m,
                    TypeId = 3,
                    RestaurantId = 1
                };

                // Act -> add restaurant and meal to database

                dbContext.Restaurants.Add(restaurant);
                dbContext.Meals.Add(meal);
                dbContext.SaveChanges();

                var mealWithNonExistingId = dbContext.Meals
                    .Where(m => m.Id == meal.Id + 1);

                // Assert -> check if non existing meal returns not found

                var fakeMealId = meal.Id + 1;

                var fakeMeal = dbContext.Meals.Find(fakeMealId);

                Assert.IsNull(fakeMeal);

                CleanDatabase();
            }
        }
        public static void CleanDatabase()
        {
            var dbContext = new RestaurantsContext();

            dbContext.Meals.Delete();
            dbContext.Restaurants.Delete();
            dbContext.Towns.Delete();
            dbContext.Users.Delete();

            dbContext.SaveChanges();
        }
 public List <RestaurantViewModel> MesPremiersRestau()
 {
     using (var db = new RestaurantsContext()) {
         throw new Exception("Et oui, je me suis débrouillé pour faire du bug");
         return(db.Restaurants.Where(r => r.ID < 10)
                .Select(r => new RestaurantViewModel {
             Name = r.name,
             Cuisine = r.cuisine
         }).ToList());
     }
 }
 public void LoadFromFileTest()
 {
     using (var db = new RestaurantsContext(optionsBuilder.Options)) {
         try {
             var restaurants = _jsonService.LoadFromFile(fileName);
             Assert.AreEqual(restaurants.Count, db.Restaurants.Count());
         } catch (Exception) {
             Assert.Fail();
         }
     }
 }
        public void EditMeal_WithCorrectData_ShouldAllowMealEdition()
        {
            using (var dbContext = new RestaurantsContext())
            {
                var httpTestServer = TestServer.Create(appBuilder =>
                {
                    var config = new HttpConfiguration();
                    WebApiConfig.Register(config);
                    appBuilder.UseWebApi(config);
                });

                // Arrange

                // Clean Database
                CleanDatabase();

                // Create restaurant

                var restaurant = new Restaurant()
                {
                    Id     = 1,
                    Name   = "Gurlata",
                    TownId = 1
                };

                // Create meal
                var meal = new Meal()
                {
                    Id           = 1,
                    Name         = "Kibap4ita",
                    Price        = 18.2m,
                    TypeId       = 3,
                    RestaurantId = 1
                };

                // Act -> add restaurant and meal to database

                dbContext.Restaurants.Add(restaurant);
                dbContext.Meals.Add(meal);
                dbContext.SaveChanges();

                var mealFromDb = dbContext.Meals.Find(meal.Id);

                mealFromDb.Name = "Kufteta";
                dbContext.SaveChanges();

                var editedMealFromBd = dbContext.Meals.Find(mealFromDb.Id);

                Assert.AreEqual(mealFromDb.Name, editedMealFromBd.Name);

                CleanDatabase();
            }
        }
 public void SaveToFileTest()
 {
     using (var db = new RestaurantsContext(optionsBuilder.Options)) {
         try {
             var restaurants = db.Restaurants.ToList();
             _jsonService.SaveToFile(restaurants, fileName);
             Assert.IsTrue(System.IO.File.Exists(fileName));
         } catch (Exception) {
             Assert.Fail();
         }
     }
 }
        public void GetMealsByRestaurant_ShouldReturn200OK_ExistingRestaurant()
        {
            var context = new RestaurantsContext();
            var existingRestaurant = context.Restaurants.FirstOrDefault();
            if (existingRestaurant == null)
            {
                Assert.Fail("Cannot perform test - no restaurants in db.");
            }

            var endPoint = string.Format("api/restaurants/{0}/meals", existingRestaurant.Id);
            var responce = HttpClient.GetAsync(endPoint).Result;
            Assert.AreEqual(HttpStatusCode.OK, responce.StatusCode);
        }
Beispiel #26
0
        public void RestoreDatabaseFromJson(string fileName, string connectionString)
        {
            var restaurants = LoadFromFile(fileName);

            using (var db = new RestaurantsContext((new DbContextOptionsBuilder().UseSqlServer(connectionString)).Options)) {
                db.Database.EnsureDeleted();
                db.Database.EnsureCreated();
                restaurants.ForEach(r => {
                    db.Add(r);
                });
                db.SaveChanges();
            }
        }
 public void EditExistingOwnersMeal_ShouldReturn200OK_And_ChangedMeal()
 {
     var dbContext = new RestaurantsContext();
     var meal = dbContext.Meals.First(m => m.Restaurant.Owner.UserName == TestUserUsername);
     var type = dbContext.MealTypes.First(t => t.Id != meal.TypeId);
     this.SetAuthorizationHeaders(true);
     var newType = type.Name;
     var response = this.SendEditMealRequest(meal.Id, "Italian salad", 12.43m, meal.TypeId);
     Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
     var result = response.Content.ReadAsAsync<MealViewModel>().Result;
     Assert.AreEqual("Italian salad", result.Name);
     Assert.AreEqual(12.43m, result.Price);
     Assert.AreEqual(newType, result.Type);
 }
 public static void CleanDatabase()
 {
     using (var dbContext = new RestaurantsContext())
     {
         dbContext.Ratings.Delete();
         dbContext.MealTypes.Delete();
         dbContext.Users.Delete();
         dbContext.Orders.Delete();
         dbContext.Meals.Delete();
         dbContext.Restaurants.Delete();
         dbContext.Towns.Delete();
         dbContext.SaveChanges();
     }
 }
Beispiel #29
0
        public void EditMealWhenLoggedWithInvalidDataShouldReturn400BadRequest()
        {
            var data = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("Price", "5.10"),
            });
            var context = new RestaurantsContext();
            var meal    = context.Meals.FirstOrDefault(m => m.Name == "Valid 2");

            Assert.IsNotNull(meal);
            var response = this.EditMealByIdLogged(meal.Id, data);

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public void EditMeal_WithEmptyMealName_ShouldNotAllowMealEdition()
        {
            using (var dbContext = new RestaurantsContext())
            {
                var httpTestServer = TestServer.Create(appBuilder =>
                {
                    var config = new HttpConfiguration();
                    WebApiConfig.Register(config);
                    appBuilder.UseWebApi(config);
                });

                // Arrange

                // Clean Database
                CleanDatabase();

                // Create restaurant

                var restaurant = new Restaurant()
                {
                    Id = 1,
                    Name = "Gurlata",
                    TownId = 1
                };

                // Create meal
                var meal = new Meal()
                {
                    Id = 1,
                    Name = "Gozba",
                    Price = 18.2m,
                    TypeId = 3,
                    RestaurantId = 1
                };

                // Act -> add restaurant and meal to database

                dbContext.Restaurants.Add(restaurant);
                dbContext.Meals.Add(meal);
                dbContext.SaveChanges();

                var mealFromDb = dbContext.Meals.Find(meal.Id);

                mealFromDb.Name = "";
                dbContext.SaveChanges();

                CleanDatabase();
            }
        }
Beispiel #31
0
        public void GetMealsByRestaurant_ShouldReturn200OK_ExistingRestaurant()
        {
            var context            = new RestaurantsContext();
            var existingRestaurant = context.Restaurants.FirstOrDefault();

            if (existingRestaurant == null)
            {
                Assert.Fail("Cannot perform test - no restaurants in db.");
            }

            var endPoint = string.Format("api/restaurants/{0}/meals", existingRestaurant.Id);
            var responce = HttpClient.GetAsync(endPoint).Result;

            Assert.AreEqual(HttpStatusCode.OK, responce.StatusCode);
        }
        public void Seed()
        {
            var context = new RestaurantsContext();
            if (!context.Users.Any(u => u.UserName == TestUserUsername))
            {
                SeedUsers(context);
            }

            if (!context.Meals.Any())
            {
                var mealTypes = SeedMealTypes(context);

                SeedMeals(context, mealTypes);
            }
        }
Beispiel #33
0
        public void EditMealWhenLoggedWithInvalidIdShouldReturn404()
        {
            var data = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("name", "Edited"),
                new KeyValuePair <string, string>("typeId", "1"),
                new KeyValuePair <string, string>("Price", "5.10"),
            });
            var context = new RestaurantsContext();
            var meal    = context.Meals.FirstOrDefault(m => m.Id == int.MaxValue);

            Assert.IsNull(meal);
            var response = this.EditMealByIdLogged(int.MaxValue, data);

            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
Beispiel #34
0
        public void Seed()
        {
            var context = new RestaurantsContext();

            if (!context.Users.Any(u => u.UserName == TestUserUsername))
            {
                SeedUsers(context);
            }

            if (!context.Meals.Any())
            {
                var mealTypes = SeedMealTypes(context);

                SeedMeals(context, mealTypes);
            }
        }
        private List<MealType> SeedMealTypes(RestaurantsContext context)
        {
            var mealTypes = new List<MealType>()
            {
                new MealType() {Name = "Salad", Order = 10},
                new MealType() {Name = "Soup", Order = 20}
            };

            foreach (var mealType in mealTypes)
            {
                context.MealTypes.Add(mealType);
            }

            context.SaveChanges();
            return mealTypes;
        }
        public void TestInit()
        {
            this.httpTestServer = TestServer.Create(appBuilder =>
            {
                var config = new HttpConfiguration();
                WebApiConfig.Register(config);
                appBuilder.UseWebApi(config);
            });

            this.httpClient = httpTestServer.HttpClient;

            var context = new RestaurantsContext();

            context.Database.Delete();
            context.Database.Create();
            this.SeedDatabase();
        }
Beispiel #37
0
        public void EditMealWhenNotLoggedShouldReturn401()
        {
            var data = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("name", "Edited"),
                new KeyValuePair <string, string>("typeId", "1"),
                new KeyValuePair <string, string>("Price", "5.10"),
            });
            var context = new RestaurantsContext();
            var meal    = context.Meals.FirstOrDefault(m => m.Name == "Valid 2");

            Assert.IsNotNull(meal);

            var response = this.EditMealByIdNotLogged(meal.Id, data);

            Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        private void SeedUsers(RestaurantsContext context)
        {
            var userStore = new UserStore<ApplicationUser>(context);
            var userManager = new ApplicationUserManager(userStore);

            var user = new ApplicationUser()
            {
                UserName = TestUserUsername,
                Email = string.Format("{0}@gmail.com", TestUserUsername)
            };

            var userResult = userManager.CreateAsync(user, TestUserPassword).Result;
            if (!userResult.Succeeded)
            {
                Assert.Fail(string.Join("\n", userResult.Errors));
            }
        }
        private static void Seed()
        {
            var db = new RestaurantsContext();
            db.Restaurants.Add(new Restaurant()
            {
                Name = "Test Restaurant",
                OwnerId = "123owner",
                TownId = 1
            });

            db.Meals.Add(new Meal()
            {
                Name = "Baklava",
                Price = 5.2m,
                RestaurantId = 1,
                TypeId = 2
            });
        }
        private static void Seed()
        {
            var context = new RestaurantsContext();

            if (!context.Restaurants.Any())
            {
                context.Restaurants.Add(new Restaurant()
                {
                    Name = "Mir",
                    TownId = 1,
                });
                context.SaveChanges();
            }

            if (!context.MealTypes.Any())
            {
                var mealTypes = new[]
                {
                    new MealType {Name = "Salad", Order = 10},
                    new MealType {Name = "Soup", Order = 20},
                    new MealType {Name = "Main", Order = 30},
                    new MealType {Name = "Dessert", Order = 40}
                };

                foreach (var mealType in mealTypes)
                {
                    context.MealTypes.Add(mealType);
                }

                context.SaveChanges();
            }
            if (!context.Meals.Any())
            {
                context.Meals.Add(new Meal()
                {
                    Name = "Rice",
                    Price = 10.0m,
                    TypeId = 1,
                    RestaurantId = 1
                });
                context.SaveChanges();

            }
        }
        public void EditMeal_NotOwnerUser_ShouldReturn401Unauthorized()
        {
            var context = new RestaurantsContext();

            string firstUserUsername = "******" + DateTime.Now.Ticks;
            string firstUserPassword = "******" + DateTime.Now.Ticks;
            string firstUserEmail = DateTime.Now.Ticks + "@pe.tar";

            string secondUserUsername = "******" + DateTime.Now.Ticks;
            string secondUserPassword = "******" + DateTime.Now.Ticks;
            string secondUserEmail = DateTime.Now.Ticks + "@sa.sho";

            var registerFirstUserHttpResponse = TestingEngine.RegisterUserHttpPost(firstUserUsername, firstUserPassword, firstUserEmail);
            Assert.AreEqual(HttpStatusCode.OK, registerFirstUserHttpResponse.StatusCode);

            var registerSecondUserHttpResponse = TestingEngine.RegisterUserHttpPost(secondUserUsername, secondUserPassword, secondUserEmail);
            Assert.AreEqual(HttpStatusCode.OK, registerSecondUserHttpResponse.StatusCode);

            var loggedUserData = TestingEngine.LoginUser(firstUserUsername, firstUserPassword);
            Assert.AreEqual(loggedUserData.UserName, firstUserUsername);

            string restaurantName = "V shubraka";
            int restaurantTownId = context.Towns.First().Id;

            var createRestaurantHttpResponse = TestingEngine.CreateRestaurantHttpPost(
                loggedUserData.Access_Token, restaurantName, restaurantTownId);
            Assert.AreEqual(HttpStatusCode.Created, createRestaurantHttpResponse.StatusCode);
            var createdRestaurant = createRestaurantHttpResponse.Content.ReadAsAsync<RestaurantModel>().Result;

            var mealName = "Leleeeee" + DateTime.Now.Ticks;
            var mealType = 2;
            var mealPrice = 100m;
            var mealRestaurantId = createdRestaurant.Id;

            var createMealHttpPost = TestingEngine.CreateMealHttpPost(loggedUserData.Access_Token, mealName, mealType, mealRestaurantId, mealPrice);
            var createdMeal = createMealHttpPost.Content.ReadAsAsync<MealModel>().Result;

            loggedUserData = TestingEngine.LoginUser(secondUserUsername, secondUserPassword);
            Assert.AreEqual(loggedUserData.UserName, secondUserUsername);

            var putResponse = TestingEngine.EditMealHttpPut(loggedUserData.Access_Token, createdMeal.Id, "Hapvanka", 1, 200m);
            Assert.AreEqual(HttpStatusCode.Unauthorized, putResponse.StatusCode);
        }
Beispiel #42
0
        private void SeedUsers(RestaurantsContext context)
        {
            var userStore   = new UserStore <ApplicationUser>(context);
            var userManager = new ApplicationUserManager(userStore);

            var user = new ApplicationUser()
            {
                UserName = TestUserUsername,
                Email    = string.Format("{0}@gmail.com", TestUserUsername)
            };

            var userResult = userManager
                             .CreateAsync(user, TestUserPassword).Result;

            if (!userResult.Succeeded)
            {
                Assert.Fail(string.Join("\n", userResult.Errors));
            }
        }
        public void EditOwnRestaurantMeal_WithInvalidMealId_ShouldReturn400BadRequest()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                          .First(m => m.Restaurant.Owner.UserName == TestUserUsername);

            var newName  = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                                                       DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));
            var invalidMealType = -1;

            // Act
            this.SetAuthorizationHeaders(true);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, invalidMealType);

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public void EditRestaurantMeal_WithoutAccessToken_ShouldReturn401Unauthorized()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                          .First(m => m.Restaurant.Owner.UserName == TestUserUsername);
            var type = context.MealTypes.First(t => t.Id != ownMeal.TypeId);

            var newName  = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                                                       DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));

            // Act
            this.SetAuthorizationHeaders(false);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, type.Id);

            // Assert
            Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        public void Initialize()
        {
            // Start OWIN testing HTTP server with Web API support
            this.testServer = TestServer.Create(appBuilder =>
                {
                    var config = new HttpConfiguration();
                    WebApiConfig.Register(config);

                    var startup = new Startup();
                    startup.Configuration(appBuilder);

                    appBuilder.UseWebApi(config);
                });

            this.client = this.testServer.HttpClient;

            this.context = new RestaurantsContext();

            this.PopulateDatabase();
        }
Beispiel #46
0
        public static void BeforeAllTests()
        {
            Nav.Host = "http://localhost:44444";

            RestaurantsContext restaurantsContext = new RestaurantsContext();

            // Runs before any of the tests are run
            dataFixtures = new BddSharp.Fixtures();

            if (restaurantsContext.Database.Connection.State == ConnectionState.Open)
            {
                restaurantsContext.Database.Connection.Close();
            }

            Database.SetInitializer(new RestaurantsSeedInitializer(context => dataFixtures.Load(restaurantsContext, Assembly.GetExecutingAssembly())));;
            restaurantsContext.Database.Initialize(true);
            restaurantsContext.Database.Connection.Open();

            testServer.Spawn();
        }
Beispiel #47
0
        public void CreateDbTest()
        {
            IQueryable <Restaurant> mesRestaurantsFiltres;

            using (var db = new RestaurantsContext()) {
                db.Database.EnsureCreated();



                var Restau1 = new Restaurant()
                {
                    name    = "Tchouchoura",
                    address = new Address()
                    {
                        street = "rue Ampère", zipcode = "38000"
                    },
                    borough = "Grenoble", cuisine = "Balkans",
                    grades  = new List <Grade> {
                        new Grade()
                        {
                            date = 456, grade = "A", score = 10
                        },
                        new Grade()
                        {
                            date = 789, grade = "A", score = 10
                        }
                    }
                };

                db.Restaurants.Add(Restau1);
                db.SaveChanges();


                var result = db.Restaurants.Include(r => r.address).ToList();

                mesRestaurantsFiltres = db.Restaurants.Where(r => r.ID < 5);


                Restau1.name = "toto";
            }
        }
        public void Edit_ShouldReturn400BadRequestWhenModelIsNull()
        {
            var context = new RestaurantsContext();
            var newTown = new Town()
            {
                Name = "New town"
            };

            context.Towns.Add(newTown);
            context.SaveChanges();

            var newRestaurant = new Restaurant()
            {
                Name = "New restaurant",
                TownId = newTown.Id
            };

            context.Restaurants.Add(newRestaurant);
            context.SaveChanges();

            var newMeal = new Meal()
            {
                Name = "New meal",
                Price = 4.99M,
                RestaurantId = newRestaurant.Id,
                TypeId = 3
            };

            context.Meals.Add(newMeal);
            context.SaveChanges();

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("name", "aaaaa")
            });

            var response = httpClient.PutAsync(string.Format("api/meals/{0}", newMeal.Id), content).Result;

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public void EditMeal_WitInvalidEditData_ShouldReturn400BadRequest()
        {
            var context = new RestaurantsContext();

            string firstUserUsername = "******" + DateTime.Now.Ticks;
            string firstUserPassword = "******" + DateTime.Now.Ticks;
            string firstUserEmail = DateTime.Now.Ticks + "@pe.tar";

            var registerHttpResponse = TestingEngine.RegisterUserHttpPost(firstUserUsername, firstUserPassword, firstUserEmail);
            Assert.AreEqual(HttpStatusCode.OK, registerHttpResponse.StatusCode);

            var loginUserData = TestingEngine.LoginUser(firstUserUsername, firstUserPassword);
            Assert.AreEqual(loginUserData.UserName, firstUserUsername);

            string restaurantName = "V shubraka";
            int restaurantTownId = context.Towns.First().Id;

            var createRestaurantHttpResponse = TestingEngine.CreateRestaurantHttpPost(
                loginUserData.Access_Token, restaurantName, restaurantTownId);
            Assert.AreEqual(HttpStatusCode.Created, createRestaurantHttpResponse.StatusCode);
            var createdRestaurant = createRestaurantHttpResponse.Content.ReadAsAsync<RestaurantModel>().Result;

            var mealName = "Qdene" + DateTime.Now.Ticks;
            var mealType = 1;
            var mealPrice = 20m;
            var mealRestaurantId = createdRestaurant.Id;

            var createMealHttpPost = TestingEngine.CreateMealHttpPost(loginUserData.Access_Token, mealName, mealType, mealRestaurantId, mealPrice);
            var createdMeal = createMealHttpPost.Content.ReadAsAsync<MealModel>().Result;

            var putResponse1 = TestingEngine.EditMealHttpPut(loginUserData.Access_Token, createdMeal.Id, null, 3, 70m);
            Assert.AreEqual(HttpStatusCode.BadRequest, putResponse1.StatusCode);

            var putResponse2 = TestingEngine.EditMealHttpPut(loginUserData.Access_Token, createdMeal.Id, "mandja", null, 50m);
            Assert.AreEqual(HttpStatusCode.BadRequest, putResponse2.StatusCode);

            var putResponse3 = TestingEngine.EditMealHttpPut(loginUserData.Access_Token, createdMeal.Id, "fasul", 3, null);
            Assert.AreEqual(HttpStatusCode.BadRequest, putResponse3.StatusCode);
        }
        private void SeedTown()
        {
            using (var context = new RestaurantsContext())
            {
                var newTown = new Town()
                {
                    Name = "New town"
                };

                context.Towns.Add(newTown);
                context.SaveChanges();


                this.townId = newTown.Id;
            }
        }
        private void SeedRestaurant(LoginData loginData)
        {
            using (var context = new RestaurantsContext())
            {
                var newRestaurant = new Restaurant()
                {
                    Name = "New restaurant",
                    TownId = townId,
                    OwnerId = context.Users.FirstOrDefault(u => u.UserName == loginData.Username).Id
                };

                context.Restaurants.Add(newRestaurant);
                context.SaveChanges();

                this.restaurantId = newRestaurant.Id;
            }
        }
        private void SeedMealTypes()
        {
            using (var context = new RestaurantsContext())
            {
                var firstNewMealType = new MealType
                {
                    Name = "Salad",
                    Order = 10
                };

                var secondNewMealType = new MealType
                {
                    Name = "Soup",
                    Order = 20
                };

                context.MealTypes.Add(firstNewMealType);
                context.MealTypes.Add(secondNewMealType);
                context.SaveChanges();

                this.firstMealTypeId = firstNewMealType.Id;
                this.secondMealTypeId = secondNewMealType.Id;
            }
        }
        private void SeedMeal()
        {
            using (var context = new RestaurantsContext())
            {
                var newMeal = new Meal()
                {
                    Name = "New meal",
                    Price = 4.99M,
                    RestaurantId = restaurantId,
                    TypeId = firstMealTypeId
                };

                context.Meals.Add(newMeal);
                context.SaveChanges();

                this.mealId = newMeal.Id;
            }
        }
        public static void CleanDatabase()
        {
            using (var dbContext = new RestaurantsContext())
            {
                foreach (var meal in dbContext.Meals)
                {
                    dbContext.Meals.Remove(meal);
                }

                foreach (var order in dbContext.Orders)
                {
                    dbContext.Orders.Remove(order);
                }

                foreach (var rating in dbContext.Ratings)
                {
                    dbContext.Ratings.Remove(rating);
                }

                foreach (var restaurant in dbContext.Restaurants)
                {
                    dbContext.Restaurants.Remove(restaurant);
                }
                dbContext.SaveChanges();
            }
        }
 public void EditNonExistingOwnersMeal_ShouldReturn404NotFound()
 {
     var dbContext = new RestaurantsContext();
     var type = dbContext.MealTypes.First();
     this.SetAuthorizationHeaders(true);
     var response = this.SendEditMealRequest(2000, "Italian salad", 12.43m, type.Id);
     Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
 }
 public void EditExistingOwnersMealWithInvalidData_ShouldReturn400BadRequest()
 {
     var dbContext = new RestaurantsContext();
     var meal = dbContext.Meals.First(m => m.Restaurant.Owner.UserName == TestUserUsername);
     var type = dbContext.MealTypes.First(t => t.Id != meal.TypeId);
     this.SetAuthorizationHeaders(true);
     var response = this.SendEditMealRequest(meal.Id, "", 12.43m, meal.TypeId);
     Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
 }
 public void EditExistingMeal_AnotherOwner_ShouldReturn401Unauthorized()
 {
     var dbContext = new RestaurantsContext();
     var meal = dbContext.Meals.First(m => m.Restaurant.Owner.UserName == TestUserUsername);
     var type = dbContext.MealTypes.First(t => t.Id != meal.TypeId);
     this.SetAuthorizationHeaders(false);
     var response = this.SendEditMealRequest(meal.Id, "Italian salad", 12.43m, meal.TypeId);
     Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
 }
        public void EditExistingMeal_ShouldReturn_200_OK()
        {
            var context = new RestaurantsContext();

            var existingBug = context.Meals.FirstOrDefault();

            if (existingBug == null)
            {
                Assert.Fail("Cannot perform test - no meal in DB");
            }

            var endpoint = string.Format("api/meals/{0}", 1);
            var responce = httpClient.GetAsync(endpoint).Result;

            Assert.AreEqual(HttpStatusCode.OK, responce.StatusCode);


        }
        public void EditOwnRestaurantMeal_WithInvalidMealId_ShouldReturn400BadRequest()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                .First(m => m.Restaurant.Owner.UserName == TestUserUsername);

            var newName = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));
            var invalidMealType = -1;

            // Act
            this.SetAuthorizationHeaders(true);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, invalidMealType);

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public void EditRestaurantMeal_WithoutAccessToken_ShouldReturn401Unauthorized()
        {
            // Arrange
            var context = new RestaurantsContext();
            var ownMeal = context.Meals
                .First(m => m.Restaurant.Owner.UserName == TestUserUsername);
            var type = context.MealTypes.First(t => t.Id != ownMeal.TypeId);

            var newName = DateTime.Now.Ticks.ToString();
            var newPrice = decimal.Parse(string.Format("{0}.{1}",
                DateTime.Now.Ticks % 10, DateTime.Now.Ticks % 100));

            // Act
            this.SetAuthorizationHeaders(false);

            var response = this.SendEditMealRequest(ownMeal.Id, newName, newPrice, type.Id);

            // Assert
            Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);
        }