public void RateRestaurantWithInvalidIdShouldReturnNotFound() { // Setup repositories var mockedRepository = new Mock <IRepository <Restaurant> >(); mockedRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns((Restaurant)null); var mockedUsers = new Mock <IRepository <ApplicationUser> >(); // Setup data layer var mockedContext = new Mock <IRestaurantData>(); mockedContext.Setup(c => c.Restaurants).Returns(mockedRepository.Object); mockedContext.Setup(c => c.ApplicationUsers).Returns(mockedUsers.Object); var mockedProvider = new Mock <IUserIdProvider>(); mockedProvider.Setup(p => p.GetUserId()).Returns("10"); // Setup controller var controller = new RestaurantsController(mockedContext.Object, mockedProvider.Object); controller.Request = new HttpRequestMessage(); controller.Configuration = new HttpConfiguration(); var response = controller.PostRateExistingRestaurant(1, new RatingBindingModel() { Stars = 1 }) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); }
public void RateRestaurant_WhenValidData_ShouldReturnOk() { // Setup fake restaurants var user = new ApplicationUser() { Id = "1", UserName = "******", PasswordHash = "1234" }; var sofia = new Town() { Id = 1, Name = "Sofia" }; var restourant = new Restaurant() { Id = 1, Meals = new List <Meal>(), Name = "Fake", Owner = user, OwnerId = "1", Ratings = new List <Rating>(), Town = sofia }; // Setup repositories var mockedRepository = new Mock <IRepository <Restaurant> >(); mockedRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns(restourant); var mockedUsers = new Mock <IRepository <ApplicationUser> >(); mockedUsers.Setup(r => r.GetById(It.IsAny <string>())).Returns(user); // Setup data layer var mockedContext = new Mock <IRestaurantData>(); mockedContext.Setup(c => c.Restaurants).Returns(mockedRepository.Object); mockedContext.Setup(c => c.ApplicationUsers).Returns(mockedUsers.Object); var mockedProvider = new Mock <IUserIdProvider>(); mockedProvider.Setup(p => p.GetUserId()).Returns("10"); // Setup controller var controller = new RestaurantsController(mockedContext.Object, mockedProvider.Object) { Request = new HttpRequestMessage(), Configuration = new HttpConfiguration() }; var response = controller.PostRateExistingRestaurant(1, new RatingBindingModel() { Stars = 1 }) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(1, restourant.Ratings.Count); Assert.AreEqual(1, restourant.Ratings.Select(r => r.Stars).Average()); }