public void GetAllRestaurantsWhenHasNoSuchTownShouldReturnOkAndEmptyList() { // Setup repositories var mockedRepository = new Mock <IRepository <Town> >(); mockedRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns((Town)null); // Setup data layer var mockedContext = new Mock <IRestaurantData>(); mockedContext.Setup(c => c.Towns).Returns(mockedRepository.Object); // Setup controller var controller = new RestaurantsController(mockedContext.Object, new AspNetUserIdProvider()); controller.Request = new HttpRequestMessage(); controller.Configuration = new HttpConfiguration(); var response = controller.GetRestaurantsByTown(1).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var restaurants = response.Content .ReadAsAsync <IEnumerable <RestaurantViewModel> >() .Result .Select(r => r.Name) .ToList(); Assert.AreEqual(0, restaurants.Count); }
public void GetAllRestaurantsWhenHasSuchTownAndMoreThanOneRestaurantShouldReturnOkAndOrderTheRestaurants() { // Setup fake restaurants var user = new ApplicationUser() { Id = "1", UserName = "******", PasswordHash = "1234" }; var sofia = new Town() { Id = 1, Name = "Sofia" }; var fakeTown = new Town() { Id = 1, Name = "Sofia", Restaurants = new List <Restaurant>() { new Restaurant() { Id = 1, Name = "Best", Owner = user, Ratings = new List <Rating>() { new Rating() { Stars = 10, User = new ApplicationUser() { Id = "2", UserName = "******", PasswordHash = "1234" } } }, Meals = new List <Meal>(), Town = sofia }, new Restaurant() { Id = 2, Name = "BSecond", Owner = user, Ratings = new List <Rating>() { new Rating() { Stars = 1, User = new ApplicationUser() { Id = "2", UserName = "******", PasswordHash = "1234" } } }, Meals = new List <Meal>(), Town = sofia }, new Restaurant() { Id = 3, Name = "AThird", Owner = user, Ratings = new List <Rating>() { new Rating() { Stars = 1, User = new ApplicationUser() { Id = "2", UserName = "******", PasswordHash = "1234" } } }, Meals = new List <Meal>(), Town = sofia } } }; // Setup repositories var mockedRepository = new Mock <IRepository <Town> >(); mockedRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns(fakeTown); // Setup data layer var mockedContext = new Mock <IRestaurantData>(); mockedContext.Setup(c => c.Towns).Returns(mockedRepository.Object); // Setup controller var controller = new RestaurantsController(mockedContext.Object, new AspNetUserIdProvider()); controller.Request = new HttpRequestMessage(); controller.Configuration = new HttpConfiguration(); var response = controller.GetRestaurantsByTown(1).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var restaurants = response.Content .ReadAsAsync <IEnumerable <RestaurantViewModel> >() .Result .Select(r => r.Name) .ToList(); var fakeRestourants = fakeTown.Restaurants .OrderByDescending(r => r.Ratings.Select(ra => ra.Stars).Average()) .ThenBy(r => r.Name) .Select(r => r.Name) .ToList(); CollectionAssert.AreEqual(fakeRestourants, restaurants); }