//private void SetupFilterLists(string attendance, string studyMode, string qualificationLevel, string pattern, string distance, string dfe1619Funded, string location, string startDate, string providerKeyword, TrainingCourseResultsViewModel viewModel)
        //{
        //    viewModel.CourseFiltersModel.Location = location;
        //    viewModel.CourseFiltersModel.ProviderKeyword = providerKeyword;
        //    viewModel.CourseFiltersModel.AttendanceSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.AttendanceMode)}", AttendanceModesSource.Split(','), attendance);

        //    viewModel.CourseFiltersModel.PatternSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.AttendancePattern)}", AttendancePatternModesSource.Split(','), pattern);

        //    viewModel.CourseFiltersModel.QualificationSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.QualificationLevel)}", QualificationLevelSource.Split(','), qualificationLevel);

        //    viewModel.CourseFiltersModel.StudyModeSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.StudyMode)}", StudyModesSource.Split(','), studyMode);

        //    viewModel.CourseFiltersModel.DistanceSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.Distance)}", DistanceSource.Split(','), distance);

        //    viewModel.CourseFiltersModel.AgeSuitabilitySelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.AgeSuitability)}", AgeSuitabilitySource.Split(','), dfe1619Funded);

        //    viewModel.CourseFiltersModel.StartDateSelectedList =
        //        courseSearchConverter.GetFilterSelectItems(
        //            $"{nameof(CourseFiltersModel)}.{nameof(CourseFiltersModel.StartDate)}", StartDateSource.Split(','), startDate);
        //}
        private void SetupSearchLinks(string searchTerm, CourseSearchResultsViewModel viewModel, string pathQuery, CourseSearchOrderBy sortBy)
        {
            viewModel.OrderByLinks   = courseSearchViewModelService.GetOrderByLinks(pathQuery, sortBy);
            viewModel.ResetFilterUrl = new Uri($"{CourseSearchResultsPage}?searchterm={searchTerm}", UriKind.RelativeOrAbsolute);
        }
        public void IndexTests(string searchTerm, string filterCourseByText, string pageTitle, string courseSearchResultsPage, string courseDetailsPage, string sortBy, CourseSearchResult courseSearchResponse)
        {
            // setupFakes
            A.CallTo(() => fakeCourseSearchService.SearchCoursesAsync(A <string> ._, A <CourseSearchProperties> ._)).Returns(courseSearchResponse);

            // Assign
            var controller = new CourseSearchResultsController(fakeApplicationLogger, fakeCourseSearchService, asyncHelper, fakeCourseSearchViewModelService, fakeBuildQueryStringService)
            {
                FilterCourseByText         = filterCourseByText,
                PageTitle                  = pageTitle,
                CourseSearchResultsPage    = courseSearchResultsPage,
                CourseDetailsPage          = courseDetailsPage,
                LocationRegex              = nameof(CourseSearchResultsController.LocationRegex),
                RecordsPerPage             = 40,
                AdvancedLoanProviderLabel  = nameof(CourseSearchResultsController.AdvancedLoanProviderLabel),
                LocationLabel              = nameof(CourseSearchResultsController.LocationLabel),
                ProviderLabel              = nameof(CourseSearchResultsController.ProviderLabel),
                StartDateLabel             = nameof(CourseSearchResultsController.StartDateLabel),
                OrderByText                = nameof(CourseSearchResultsController.OrderByText),
                StartDateOrderByText       = nameof(CourseSearchResultsController.StartDateOrderByText),
                DistanceOrderByText        = nameof(CourseSearchResultsController.DistanceOrderByText),
                RelevanceOrderByText       = nameof(CourseSearchResultsController.RelevanceOrderByText),
                NoTrainingCoursesFoundText = nameof(CourseSearchResultsController.NoTrainingCoursesFoundText)
            };

            // Act
            var controllerResult = controller.WithCallTo(contrl =>
                                                         contrl.Index(
                                                             searchTerm,
                                                             string.Empty,
                                                             string.Empty,
                                                             string.Empty,
                                                             string.Empty,
                                                             sortBy,
                                                             string.Empty,
                                                             string.Empty,
                                                             false,
                                                             1));

            // Assert
            controllerResult.ShouldRenderView("SearchResults").WithModel <CourseSearchResultsViewModel>(
                vm =>
            {
                vm.PageTitle.Should().BeEquivalentTo(controller.PageTitle);
                vm.FilterCourseByText.Should().BeEquivalentTo(controller.FilterCourseByText);
            });

            if (!string.IsNullOrWhiteSpace(searchTerm))
            {
                A.CallTo(() => fakeCourseSearchService.SearchCoursesAsync(A <string> ._, A <CourseSearchProperties> ._)).MustHaveHappened();
                if (courseSearchResponse.Courses.Any())
                {
                    A.CallTo(() => fakeCourseSearchViewModelService.GetOrderByLinks(A <string> ._, A <CourseSearchOrderBy> ._)).MustHaveHappened();
                    A.CallTo(() => fakeCourseSearchViewModelService.SetupPaging(A <CourseSearchResultsViewModel> ._, A <CourseSearchResult> ._, A <string> ._, A <int> ._, A <string> ._)).MustHaveHappened();
                }
            }
            else
            {
                A.CallTo(() => fakeCourseSearchService.SearchCoursesAsync(A <string> ._, A <CourseSearchProperties> ._)).MustNotHaveHappened();
                A.CallTo(() => fakeCourseSearchViewModelService.GetOrderByLinks(A <string> ._, A <CourseSearchOrderBy> ._)).MustNotHaveHappened();
                A.CallTo(() => fakeCourseSearchViewModelService.SetupPaging(A <CourseSearchResultsViewModel> ._, A <CourseSearchResult> ._, A <string> ._, A <int> ._, A <string> ._)).MustNotHaveHappened();
            }
        }