public async Task GetRestaurantsByCity_CityIdMoreOne_ReturnedRestaurantsSpecificCityWithPagination()
        {
            // Arrange
            var pageParameters = new PageParameters()
            {
                PageNumber = Common.PageNumber,
                PageSize   = Common.PageSize
            };
            var resultRestaurants =
                new PagedList <RestaurantDto>(new Common().RestaurantsDto, Common.TotalCount,
                                              Common.PageNumber, Common.PageSize);

            var mock = new Mock <IRestaurantManagementService>();

            mock.Setup(rmService =>
                       rmService.GetRestaurantsByCityAsync(It.IsAny <PageParameters>(), It.IsAny <int>()))
            .Returns(Task.FromResult(resultRestaurants));

            var loggerMock = new Mock <ILogger <RestaurantsController> >();

            var response = new Mock <HttpResponse>();

            var httpContext = new DefaultHttpContext();

            httpContext.Response.Headers.Add("X-Test-Header", "Test Header");

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext,
            };

            var controller = new RestaurantsController(mock.Object, loggerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act
            var result = await controller.GetRestaurantsByCity(pageParameters, Common.CityId);

            // Assert
            var actionResult = Assert.IsType <OkObjectResult>(result);

            Assert.Equal(resultRestaurants, actionResult?.Value);
        }
        public async Task GetRestaurantsByCity_RestaurantsMissing_NotFoundResponse()
        {
            // Arrange
            var pageParameters = new PageParameters()
            {
                PageNumber = Common.PageNumber,
                PageSize   = Common.PageSize
            };
            var resultRestaurants =
                new PagedList <RestaurantDto>(new List <RestaurantDto>(), Common.TotalCount,
                                              Common.PageNumber, Common.PageSize);

            var mock = new Mock <IRestaurantManagementService>();

            mock.Setup(rmService =>
                       rmService.GetRestaurantsByCityAsync(It.IsAny <PageParameters>(), It.IsAny <int>()))
            .Returns(Task.FromResult(resultRestaurants));

            var loggerMock = new Mock <ILogger <RestaurantsController> >();

            var response = new Mock <HttpResponse>();

            var httpContext = new DefaultHttpContext();

            httpContext.Response.Headers.Add("X-Test-Header", "Test Header");

            var controllerContext = new ControllerContext()
            {
                HttpContext = httpContext,
            };

            var controller = new RestaurantsController(mock.Object, loggerMock.Object)
            {
                ControllerContext = controllerContext,
            };

            // Act
            var result = await controller.GetRestaurantsByCity(pageParameters, Common.CityId);

            // Assert
            Assert.Equal(typeof(NotFoundObjectResult), result.GetType());
        }
        public async Task GetRestaurantsByCity_CityIdLessOne_BadRequest()
        {
            // Arrange
            var pageParameters = new PageParameters()
            {
                PageNumber = Common.PageNumber,
                PageSize   = Common.PageSize
            };

            var mock       = new Mock <IRestaurantManagementService>();
            var loggerMock = new Mock <ILogger <RestaurantsController> >();

            var controller = new RestaurantsController(mock.Object, loggerMock.Object);

            // Act
            var result = await controller.GetRestaurantsByCity(pageParameters, Common.BadCityId);

            // Assert
            Assert.Equal(typeof(BadRequestObjectResult), result.GetType());
        }