public async Task AdminController_AddInvalidRestaurant()
        {
            var loggedInUser = new User
            {
                Id       = "1234567890",
                Name     = "Test User",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var restaurant = new Restaurant
            {
                Website     = "https://www.testrestaurant.com",
                Menu        = "https://www.testrestaurant.com/menu",
                PhoneNumber = "(215) 555 - 5555",
                TagString   = "Burgers,Fries,Beer"
            };

            await Assert.ThrowsAsync <System.ComponentModel.DataAnnotations.ValidationException>(async() =>
            {
                var mockAdminService = new MockAdminService().MockAddRestaurant(restaurant);
                var loggerMoq        = Mock.Of <ILogger <AdminController> >();
                var userProviderMoq  = new MockUserProvider().MockGetLoggedInUserAsync(loggedInUser);

                var controller = new AdminController(userProviderMoq.Object, loggerMoq, mockAdminService.Object);

                await controller.AddRestaurant(restaurant);
            });
        }
        public async Task UserListData_GET_SetPaging(int skip, int take)
        {
            // arrange
            MockAdminService.Setup_GetAllUsers_Returns_AllUserReadListResponse_Success();

            // act
            var result = (JsonResult)await SystemUnderTest.UserListData(skip, take);

            // assert
            AssertView <DataResult>(result);
            AssertPagingInfo(result);
        }
        public void UserListData_GET_InvalidResponse()
        {
            // arrange
            MockAdminService.Setup_GetAllUsers_Returns_AllUserReadListResponse_Invalid();

            // act
            var result = SystemUnderTest.UserListData(One, Two);

            // assert
            AssertView <NotFoundResult>(result);
            MockAdminService.Verify_GetAllUsers();
        }
        public void OrganizationListData_GET_FailedResponse()
        {
            // arrange
            MockAdminService.Setup_GetOrganizations_Returns_OrganizationReadListResponse_Failed();

            // act
            var result = SystemUnderTest.OrganizationListData(One, Two);

            // assert
            AssertView <NotFoundResult>(result);
            MockAdminService.Verify_GetOrganizations();
        }
        public void ListData_GET()
        {
            // arrange
            MockAdminService.Setup_GetSuperAdmins_Returns_SuperAdminUserReadListResponse_Success();

            // act
            var result = SystemUnderTest.ListData(One, Two);

            // assert
            AssertView <JsonResult>(result);
            MockAdminService.Verify_GetSuperAdmins();
        }
        public async Task AdminController_DeleteRestaurant()
        {
            var loggedInUser = new User
            {
                Id       = "1234567890",
                Name     = "Test User",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var restaurant = new Restaurant
            {
                Name         = "Test Restaurant",
                AddressLine1 = "",
                AddressLine2 = "",
                City         = "",
                State        = "",
                ZipCode      = "",
                Website      = "https://www.testrestaurant.com",
                Menu         = "https://www.testrestaurant.com/menu",
                PhoneNumber  = "(215) 555 - 5555",
                Latitude     = 0,
                Longitude    = 0,
                User         = loggedInUser,
                UserId       = loggedInUser.Id,
                TagString    = "Burgers,Fries,Beer"
            };

            var mockAdminService = new MockAdminService().MockDeleteRestaurant(restaurant);

            mockAdminService.MockGetRestaurantById(restaurant);

            var loggerMoq       = Mock.Of <ILogger <AdminController> >();
            var userProviderMoq = new MockUserProvider().MockGetLoggedInUserAsync(loggedInUser);

            var controller = new AdminController(userProviderMoq.Object, loggerMoq, mockAdminService.Object);

            var result = (RedirectToActionResult)await controller.DeleteRestaurant(restaurant);

            Assert.Equal("Restaurants", result.ActionName);
        }
        public async Task AdminController_ListRestaurants()
        {
            var mockRestaurantsList = new List <Restaurant>
            {
                new Restaurant {
                    RestaurantId   = 1,
                    Name           = "Restaurant One",
                    RestaurantTags = new List <RestaurantTag>
                    {
                        new RestaurantTag
                        {
                            RestaurantId = 1,
                            Tag          = new Tag
                            {
                                Name = "Mexican"
                            }
                        },
                        new RestaurantTag
                        {
                            RestaurantId = 1,
                            Tag          = new Tag
                            {
                                Name = "Tacos"
                            }
                        }
                    }
                },
                new Restaurant {
                    RestaurantId   = 2,
                    Name           = "Restaurant Two",
                    RestaurantTags = new List <RestaurantTag>
                    {
                        new RestaurantTag
                        {
                            RestaurantId = 2,
                            Tag          = new Tag
                            {
                                Name = "Italian"
                            }
                        },
                        new RestaurantTag
                        {
                            RestaurantId = 2,
                            Tag          = new Tag
                            {
                                Name = "Pasta"
                            }
                        }
                    }
                },
            };

            var mockAdminService = new MockAdminService().MockGetUserRestaurants(mockRestaurantsList);
            var mockLogger       = Mock.Of <ILogger <AdminController> >();
            var mockUserProvider = new MockUserProvider().MockGetLoggedInUserAsync(new User {
                Id = "12345", Name = "Test User", Email = "*****@*****.**"
            });

            var controller = new AdminController(mockUserProvider.Object, mockLogger, mockAdminService.Object);

            controller.TempData = _tempData;

            var result = await controller.Restaurants();

            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsType <ViewModel.RestaurantAdmin>(viewResult.ViewData.Model);

            Assert.IsType <ViewModel.RestaurantAdmin>(model);
            Assert.Equal(2, model.Restaurants.Count);
        }