Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 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);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        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));
        }
Exemple #7
0
        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);
        }