示例#1
0
        public void SortByNameAscending()
        {
            RestaurantsController controller = new RestaurantsController();

            ViewResult result = controller.SortByNameAscending() as ViewResult;

            Assert.IsNotNull(result);
        }
示例#2
0
        public void EditTest()
        {
            RestaurantsController controller = new RestaurantsController();

            ViewResult result = controller.Edit(2) as ViewResult;

            Assert.IsNotNull(result);
        }
示例#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);
        }
        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());
        }
示例#5
0
        public void AddNew_ReturnsCorrectView_True()
        {
            //Arrange
            RestaurantsController controller = new RestaurantsController();
            //Act
            ActionResult addNewView = controller.AddNew();

            //Assert
            Assert.IsInstanceOfType(addNewView, typeof(ViewResult));
        }
示例#6
0
        public void CheckBoth()
        {
            // Assert
            ReviewsController     controller1 = new ReviewsController();
            RestaurantsController controller2 = new RestaurantsController();

            Assert.IsNull(controller1);
            Assert.IsNull(controller2);
            Assert.AreNotEqual(controller1, controller2);
        }
示例#7
0
        public void IndexTest()
        {
            //Arrange
            RestaurantsController controller = new RestaurantsController();
            //Act
            ViewResult result = controller.Index() as ViewResult;

            //Assert
            Assert.IsNotNull(result);
        }
示例#8
0
        public void Create_Saves_Restaurant_When_Valid()
        {
            var db         = new FakeOdeToFoodDb();
            var controller = new RestaurantsController(db);

            controller.Create(new Restaurant());

            Assert.AreEqual(1, db.Added.Count);
            Assert.AreEqual(true, db.Saved);
        }
示例#9
0
        private void GetAllRestaurantsTest()
        {
            RestaurantsController restaurantsController = CreateFakeRestaurantsController();

            //Retrieving all restaurants
            var response = restaurantsController.GetAllRestaurants();

            Assert.IsType <OkObjectResult>(response.Result);
            Assert.Equal(_restaurants.Count, ((IEnumerable <LocationRestaurantModel>)((OkObjectResult)response.Result).Value).Count());
        }
        public void GetTest_RejectsInValid()
        {
            //Arrange
            var RC = new RestaurantsController(connection);

            //Act
            var result = RC.Get("HocusPocus");

            //Assert
            Assert.IsType <NotFoundObjectResult>(result);
        }
        public void GetTest_ReturnsValid()
        {
            //Arrange
            var RC = new RestaurantsController(connection);

            //Act
            var result = RC.Get("Boston");

            //Assert
            Assert.IsType <OkObjectResult>(result);
        }
示例#12
0
        public void Create_Does_Not_Save_Restaurant_When_Invalid()
        {
            var db         = new FakeOdeToFoodDb();
            var controller = new RestaurantsController(db);

            controller.ModelState.AddModelError("", "Invalid");

            controller.Create(new Restaurant());

            Assert.AreEqual(0, db.Added.Count);
        }
示例#13
0
        public void TestIndexModel()
        {
            //Arrange
            RestaurantsController controller = new RestaurantsController();
            //Act
            var indexData = controller.Index() as ViewResult;
            var actual    = indexData.Model;

            //Assert
            Assert.IsNotNull(actual);
        }
        public void SingleTest()
        {
            //Arrange
            RestaurantsController restaurantsController = new RestaurantsController();

            //Act
            var result = restaurantsController.Single(1);

            //Assert
            Assert.IsNotNull(result);
        }
示例#15
0
        public void DeleteRestaurant()
        {
            // Arrange
            RestaurantsController controller = new RestaurantsController();

            // Act
            ActionResult result = controller.Delete(null) as HttpNotFoundResult;

            // Assert
            Assert.IsNull(result);
        }
示例#16
0
        public void TestIndexModelData()
        {
            //Arrange
            RestaurantsController controller = new RestaurantsController();
            //Act
            var result = controller.Index() as ViewResult;
            var data   = result.Model as List <Restaurant>;

            //Assert
            Assert.AreEqual("FL", data[2].State);
        }
        public void Delete()
        {
            // Arrange
            RestaurantsController controller = new RestaurantsController();

            // Act
            string     sRestName = "Jimmy Johns";
            ViewResult result    = controller.Delete(sRestName) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
示例#18
0
        public void GetAllRestaurants_OneRestaurnat_OK()
        {
            //arrange
            var restID                  = 1234;
            var cuisineName             = "Mexican";
            var cuisineId               = 10;
            var restName                = "No1 Mexican Restaurant";
            var createdUser             = 10;
            var expectedCollectionCount = 1;
            var cuisine                 = new Cuisine
            {
                Name      = cuisineName,
                Id        = cuisineId,
                CreatedBy = createdUser,
                UpdatedBy = createdUser
            };

            var expectedResponse = new[]
            {
                new API.ViewModels.Restaurant {
                    Id            = restID,
                    AverageRating = 0,
                    CuisineName   = cuisineName,
                    CuisineId     = cuisineId,
                    Name          = restName,
                    ReviewCount   = 0
                }
            };

            var repoResonse = new[] {
                new Restaurant {
                    Id        = restID,
                    CreatedBy = createdUser,
                    UpdatedBy = createdUser,
                    Cuisine   = cuisine,
                    Name      = restName
                }
            };

            MockRepository.Setup(m => m.GetAllRestaurantsWithReview()).Returns(repoResonse);
            MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(10);

            var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object);

            //act
            var actionResult  = ctrl.Get();
            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");
            ValidateRestaurantCollectionResponse(contentResult.Content, expectedResponse, expectedCollectionCount);
        }
示例#19
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);
        }
        public void Delete_CallsRepository_Returns()
        {
            var restaurantRepository = new Mock <IRestaurantRepository>();

            restaurantRepository.Setup(x => x.DeleteRestaurantAsync(123)).Returns(Task.CompletedTask);

            var sut = new RestaurantsController(restaurantRepository.Object);

            sut.Delete(123).Wait();

            restaurantRepository.VerifyAll();
        }
示例#21
0
        public void GetAllRestaurants_ServerException_InternalError()
        {
            //arrange
            MockIdentity.Setup(m => m.GetRequestingUserId()).Throws(new Exception());
            var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object);

            //act
            var actionResult = ctrl.Get();

            // assert
            Assert.IsInstanceOfType(actionResult, typeof(InternalServerErrorResult));
        }
        public void DeleteTest()
        {
            //Arrange
            RestaurantsController restaurantsController = new RestaurantsController();

            //Act
            RedirectToRouteResult redirectResult = (RedirectToRouteResult)restaurantsController.Delete(1);
            string result = redirectResult.RouteValues["action"].ToString();

            //Assert
            Assert.AreEqual(result, "Login");
        }
示例#23
0
        public void TestRestaurantsCreate()
        {
            //Arrange
            FakeRestaurantRepository fakeRestaurantRepository = new FakeRestaurantRepository();
            FakeReviewRepository     fakeReviewRepository     = new FakeReviewRepository();
            RestaurantsController    controller = new RestaurantsController(fakeRestaurantRepository, fakeReviewRepository);

            //Act
            var result = controller.Create() as ViewResult;

            //Assert
            Assert.IsNotNull(result);
        }
        public void Add()
        {
            // Arrange
            RestaurantsController controller = new RestaurantsController();

            // Act
            string     sRestName = "Jimmy Johns";
            string     sAddress  = "4021 Pine St. Tampa Florida 33601";
            ViewResult result    = controller.Add(sRestName, sAddress) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
示例#25
0
        public void DetailsRouteNullTest()
        {
            int?id             = null;
            var fakeUnitOfWork = new Mock <IUnitOfWork>();

            fakeUnitOfWork.Setup(x => x.Restaurants.Get(It.IsAny <int>())).Returns(new Restaurant()
            {
                RestaurantID = id
            });
            var sut = new RestaurantsController(fakeUnitOfWork.Object);

            sut.WithCallTo(x => x.Details((int?)id)).ShouldGiveHttpStatus(HttpStatusCode.BadRequest);
        }
示例#26
0
        public void DeleteRouteNotNullTest()
        {
            int?id             = 1;
            var fakeUnitOfWork = new Mock <IUnitOfWork>();

            fakeUnitOfWork.Setup(x => x.Restaurants.Get(It.IsAny <int>())).Returns(new Restaurant()
            {
                RestaurantID = id
            });
            var sut = new RestaurantsController(fakeUnitOfWork.Object);

            sut.WithCallTo(x => x.Delete(id)).ShouldRenderDefaultView();
        }
        public void PostTest_SuccessReturnsOK()
        {
            var RC = new RestaurantsController(connection);

            var restaurant = new Restaurant();

            restaurant.Name = "My Test Restaurant";
            restaurant.City = "Pittsburgh";

            var result = RC.Post(restaurant);

            Assert.IsType <OkObjectResult>(result);
        }
        public void Update()
        {
            // Arrange
            RestaurantsController controller = new RestaurantsController();

            // Act
            string     sRestName = "Arbys";
            string     sAddress  = "5678 Willow Ave. Tampa Florida 33601";
            ViewResult result    = controller.Update(sRestName, sAddress) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void PostTest_FailedReturnsNotFound()
        {
            var RC = new RestaurantsController(connection);

            var restaurant = new Restaurant();

            restaurant.City = "bad!!! city1234";
            restaurant.Name = "good name";

            var result = RC.Post(restaurant);

            Assert.IsType <ObjectResult>(result);
        }
示例#30
0
        public void RestaurantGetByID_InvalidRestaurantID_NotFound()
        {
            //arrange
            var restID = 600;

            var ctrl = new RestaurantsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object);

            //act
            var actionResult = ctrl.Get(restID);

            // assert
            Assert.IsInstanceOfType(actionResult, typeof(NotFoundResult));
        }
 public void setup()
 {
     _restaurantStore = Substitute.For<IRestaurantStore>();
     _controller = new RestaurantsController(_restaurantStore);
 }