public void PatchRestaurant_ServerException_InternalError() { //arrange var updatedCuisineName = "Mexican"; var updatedCuisineId = 10; var updatedRestaurantName = "World Cafe"; var restaruantIdToUpdate = 155; var requestModel = new API.ViewModels.Restaurant { Id = restaruantIdToUpdate, CuisineName = updatedCuisineName, CuisineId = updatedCuisineId, Name = updatedRestaurantName, }; MockRepository.Setup(m => m.GetRestaurantById(restaruantIdToUpdate)); MockIdentity.Setup(m => m.GetRequestingUserId()).Throws(new Exception()); var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Patch(restaruantIdToUpdate, requestModel); // assert Assert.IsInstanceOfType(actionResult, typeof(InternalServerErrorResult)); }
public void GetRestaurantsOnCuisineId_NoRestaurnats_Empty() { //arrange var expectedResponse = new API.ViewModels.Restaurant[] { }; var repoResonse = new Restaurant[] { }; var cuisineId = 5; var expectedCollectionCount = 0; MockRepository.Setup(m => m.DoseCuisineIdExist(cuisineId)).Returns(true); MockRepository.Setup(m => m.GetRestaurantForCuisine(cuisineId)).Returns(repoResonse); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(10); var ctrl = new CuisinesController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Get(cuisineId); var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <API.ViewModels.Restaurant> >; //assert Assert.IsNotNull(contentResult, "Ok-200 status was not returned"); Assert.IsNotNull(contentResult.Content, "No content was returned"); RestaurantsControllerTests.ValidateRestaurantCollectionResponse(contentResult.Content, expectedResponse, expectedCollectionCount); }
public void PatchRestaurant_ValidData_OK() { //arrange var originalCuisineName = "Indian"; var originalCuisineId = 1; var originalRestaurantName = "No1 Indian Restaurant"; var updatedRestaurantName = "World Cafe"; var restaruantIdToUpdate = 155; var createdUser = 10; var callingUserId = 10; var originalCuisine = new Cuisine { Name = originalCuisineName, Id = originalCuisineId, CreatedBy = createdUser, UpdatedBy = createdUser }; var restaurantBeforeUpdate = new Restaurant { Id = restaruantIdToUpdate, CreatedBy = createdUser, UpdatedBy = createdUser, Cuisine = originalCuisine, Name = originalRestaurantName }; var requestModel = new API.ViewModels.Restaurant { Id = restaruantIdToUpdate, Name = updatedRestaurantName, }; var transactionRequest = new UpdateRestaurantRequestModel { RestaurantId = restaruantIdToUpdate, Name = updatedRestaurantName, UserId = callingUserId }; MockRepository.Setup(m => m.UpdateRestaurant(transactionRequest)); MockRepository.Setup(m => m.DoseCuisineIdExist(It.IsAny <int>())).Returns(true); MockRepository.Setup(m => m.GetRestaurantById(restaruantIdToUpdate)).Returns(restaurantBeforeUpdate); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(callingUserId); var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Patch(restaruantIdToUpdate, requestModel); var contentResult = actionResult as OkNegotiatedContentResult <API.ViewModels.Restaurant>; //assert Assert.IsNotNull(contentResult, "ok -200 status was not returned"); //Assert.AreEqual(HttpStatusCode..Accepted, responseRestaurants.StatusCode); //TODO: must check if se should return 201-accepted, 200-ok(with body) or 204 (ok with no content) Assert.IsNotNull(contentResult.Content); Assert.AreEqual(restaruantIdToUpdate, contentResult.Content.Id); }
private static void ValidateRestaurantResponse(API.ViewModels.Restaurant expectedRest, API.ViewModels.Restaurant actualRestaurantViewMode) { Assert.AreEqual(expectedRest.Id, actualRestaurantViewMode.Id, ""); Assert.AreEqual(expectedRest.Name, actualRestaurantViewMode.Name); Assert.AreEqual(expectedRest.AverageRating, actualRestaurantViewMode.AverageRating); Assert.AreEqual(expectedRest.CuisineId, actualRestaurantViewMode.CuisineId); Assert.AreEqual(expectedRest.CuisineName, actualRestaurantViewMode.CuisineName); Assert.AreEqual(expectedRest.ReviewCount, actualRestaurantViewMode.ReviewCount); }
public void PostNewRestaurant_ValidInput_OkWithUrl() { //arrange var cuisineName = "Mexican"; var cuisineId = 10; var restName = "No1 Mexican Restaurant"; var expectedRestId = 155; var createdUser = 1; var cuisine = new Cuisine { Name = cuisineName, Id = cuisineId, CreatedBy = createdUser, UpdatedBy = createdUser }; var expectedResponse = new API.ViewModels.Restaurant { Id = expectedRestId, AverageRating = 0, CuisineName = cuisineName, CuisineId = cuisineId, Name = restName, ReviewCount = 0 }; var transactionRequest = new AddRestaurantRequestModel { CuisineId = cuisineId, Name = restName, UserId = createdUser }; MockRepository.Setup(m => m.AddRestaurentGetNewId(transactionRequest)).Returns(expectedRestId); MockRepository.Setup(m => m.GetCuisineById(It.IsAny <int>())).Returns(cuisine); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(createdUser); var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Post(new API.ViewModels.Restaurant { CuisineId = cuisineId, Name = restName }); var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <API.ViewModels.Restaurant>; //assert Assert.IsNotNull(createdResult, "created-201 status was not returned"); Assert.AreEqual("DefaultRouting", createdResult.RouteName); Assert.AreEqual(expectedRestId, createdResult.RouteValues["id"]); //validate response ValidateRestaurantResponse(createdResult.Content, expectedResponse); }
public void PatchRestaurant_DatabaseException_BadData() { //arrange var updatedCuisineName = "Mexican"; var updatedCuisineId = 10; var updatedRestaurantName = "World Cafe"; var restaruantIdToUpdate = 155; var callingUserId = 10; var requestModel = new API.ViewModels.Restaurant { Id = restaruantIdToUpdate, CuisineName = updatedCuisineName, CuisineId = updatedCuisineId, Name = updatedRestaurantName, }; var transactionRequest = new UpdateRestaurantRequestModel { RestaurantId = restaruantIdToUpdate, CuisineId = updatedCuisineId, Name = updatedRestaurantName, UserId = callingUserId }; MockRepository.Setup(m => m.UpdateRestaurant(transactionRequest)) .Throws(new Exception()); MockRepository.Setup(m => m.GetRestaurantById(restaruantIdToUpdate)) .Throws(new Exception()); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(10); var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Patch(restaruantIdToUpdate, requestModel); // assert Assert.IsInstanceOfType(actionResult, typeof(BadRequestResult)); }
public void RestaurantGetByID_ValidRestaurantID_OK() { //arrange var restID = 555; var cuisineName = "Mexican"; var cuisineId = 10; var restName = "No1 Mexican Restaurant"; var createdUser = 10; var cuisine = new Cuisine { Name = cuisineName, Id = cuisineId, CreatedBy = createdUser, UpdatedBy = createdUser }; var expectedResponse = new API.ViewModels.Restaurant { Id = restID, AverageRating = 3, CuisineName = cuisineName, CuisineId = cuisineId, Name = restName, ReviewCount = 100 }; var repoResonse = new Restaurant { Id = restID, CreatedBy = createdUser, UpdatedBy = createdUser, Cuisine = cuisine, Name = restName }; //restaurant 4 setup for (var i = 0; i < 100; i++) { var newReview = new Review { CreatedBy = createdUser, UpdatedBy = createdUser, Comment = $"Comment {i} for Restaurant 555", Rating = (i % 5) + 1, PostedDateTime = new DateTime(2016, 07, 1).AddDays(i + 1), ReviewNumber = 4 + i, ReviewUser = new User { Id = createdUser, UserName = "******" } }; // 0+1 to 4+1 repoResonse.AddReview(newReview); } MockRepository.Setup(m => m.GetRestaurantWithReviewsById(restID)).Returns(repoResonse); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(10); var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Get(restID); var contentResult = actionResult as OkNegotiatedContentResult <API.ViewModels.Restaurant>; //assert Assert.IsNotNull(contentResult, "Ok-200 status was not returned"); Assert.IsNotNull(contentResult.Content, "No content was returned"); ValidateRestaurantResponse(expectedResponse, contentResult.Content); }