Пример #1
0
        public void Then_Adds_PageLink_For_Every_Page()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SearchTerm       = "asedfas",
                SelectedProvider = "asdsad",
                SelectedCourse   = "iknjso",
                SelectedStatus   = ApprenticeshipStatus.WaitingToStart,
                SelectedEndDate  = DateTime.Today,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 3,
                SortField   = "gsd",
                ReverseSort = false
            };

            var pageLinks = filterModel.PageLinks.Where(link =>
                                                        link.Label.ToUpper() != "PREVIOUS" &&
                                                        link.Label.ToUpper() != "NEXT").ToList();

            for (var i = 0; i < 3; i++)
            {
                pageLinks[i].Label.Should().Be($"{i + 1}");
                pageLinks[i].AriaLabel.Should().Be($"Page {i + 1}");
                pageLinks[i].RouteData.Should().BeEquivalentTo(new Dictionary <string, string>
                {
                    { nameof(filterModel.SearchTerm), filterModel.SearchTerm },
                    { nameof(filterModel.SelectedProvider), filterModel.SelectedProvider },
                    { nameof(filterModel.SelectedCourse), filterModel.SelectedCourse },
                    { nameof(filterModel.SelectedStatus), filterModel.SelectedStatus.ToString() },
                    { nameof(filterModel.SelectedEndDate), filterModel.SelectedEndDate.Value.ToString("yyyy-MM-dd") },
                    { nameof(filterModel.SortField), filterModel.SortField },
                    { nameof(filterModel.ReverseSort), filterModel.ReverseSort.ToString() },
                    { nameof(filterModel.PageNumber), (i + 1).ToString() }
                });
            }
        }
        public void And_PageNumber_3_Then_Should_Be_Triple_PageSize(ApprenticesFilterModel filterModel)
        {
            filterModel.PageNumber = 3;
            filterModel.TotalNumberOfApprenticeshipsFound = 20 * Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage;

            filterModel.PagedRecordsTo.Should().Be(3 * Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage);
        }
 public void Then_Not_Contain_Item_For_PageNumber(
     ApprenticesFilterModel filterModel)
 {
     filterModel.RouteData.Should().NotContain(new KeyValuePair <string, string>(
                                                   nameof(filterModel.PageNumber), filterModel.PageNumber.ToString())
                                               );
 }
        public void And_PageNumber_1_And_0_Records_Found_Then_Should_Be_0(ApprenticesFilterModel filterModel)
        {
            filterModel.PageNumber = 1;
            filterModel.TotalNumberOfApprenticeshipsFound = 0;

            filterModel.PagedRecordsFrom.Should().Be(0);
        }
        private static IList <string> BuildUsedFilterList(ApprenticesFilterModel model)
        {
            var filters = new List <string>();

            if (!string.IsNullOrWhiteSpace(model.SearchTerm))
            {
                filters.Add($"‘{WebUtility.HtmlEncode(model.SearchTerm)}’");
            }

            if (!string.IsNullOrWhiteSpace(model.SelectedProvider))
            {
                filters.Add(WebUtility.HtmlEncode(model.SelectedProvider));
            }

            if (!string.IsNullOrWhiteSpace(model.SelectedCourse))
            {
                filters.Add(WebUtility.HtmlEncode(model.SelectedCourse));
            }

            if (model.SelectedStatus.HasValue)
            {
                filters.Add(model.SelectedStatus.Value.GetDescription());
            }

            if (model.SelectedEndDate.HasValue)
            {
                filters.Add(model.SelectedEndDate.Value.ToGdsFormatWithoutDay());
            }

            return(filters);
        }
        public void And_Has_SelectedEmployer_Then_True()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedProvider = "asedfas"
            };

            filterModel.SearchOrFiltersApplied.Should().BeTrue();
        }
        public void And_Has_SelectedCourse_Then_True()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedCourse = "asedfas"
            };

            filterModel.SearchOrFiltersApplied.Should().BeTrue();
        }
        public void And_Has_SelectedStatus_Then_True()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedStatus = ApprenticeshipStatus.WaitingToStart
            };

            filterModel.SearchOrFiltersApplied.Should().BeTrue();
        }
        public void And_Has_SelectedEndDate_Then_True()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedEndDate = DateTime.Today
            };

            filterModel.SearchOrFiltersApplied.Should().BeTrue();
        }
        public void And_Has_SelectedAlert_Then_True()
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedAlert = Alerts.IlrDataMismatch
            };

            filterModel.SearchOrFiltersApplied.Should().BeTrue();
        }
Пример #11
0
        public void And_No_Search_And_SelectedAlert_Then_SelectedAlert(Alerts selectedAlert)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedAlert = selectedAlert
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>{selectedAlert.GetDescription()}</strong>");
        }
        public void Then_Should_Set_SortField(
            string sortField,
            ApprenticesFilterModel model)
        {
            //Act
            var actual = model.BuildSortRouteData(sortField);

            //Assert
            Assert.AreEqual(sortField, actual[nameof(model.SortField)]);
        }
Пример #13
0
        public void And_No_Search_And_SelectedEndDate_Then_SelectedEndDate(
            DateTime selectedEndDate)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedEndDate = selectedEndDate
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>{selectedEndDate.ToGdsFormatWithoutDay()}</strong>");
        }
Пример #14
0
        public void And_No_Search_And_SelectedCourse_Then_SelectedCourse(
            string selectedCourse)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedCourse = selectedCourse
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>{selectedCourse}</strong>");
        }
Пример #15
0
        public void And_No_Search_And_SelectedEmployer_Then_SelectedEmployer(
            string selectedEmployer)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedEmployer = selectedEmployer
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>{selectedEmployer}</strong>");
        }
Пример #16
0
        public void And_No_Search_And_SelectedStatus_Then_SelectedStatus(
            ApprenticeshipStatus selectedStatus)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedStatus = selectedStatus
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>{selectedStatus.GetDescription()}</strong>");
        }
Пример #17
0
        public void And_Search_And_No_Filters_Then_Quoted_SearchTerm(
            string searchTerm)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SearchTerm = searchTerm
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>‘{searchTerm}’</strong>");
        }
Пример #18
0
        public void Then_The_Show_Search_Flag_Is_Set_Based_On_Number_Of_Apprentices(int numberOfApprentices, bool expectedBool)
        {
            //Act
            var filterModel = new ApprenticesFilterModel
            {
                TotalNumberOfApprenticeships = numberOfApprentices
            };

            //Assert
            Assert.AreEqual(expectedBool, filterModel.ShowSearch);
        }
Пример #19
0
        public void And_Search_Has_Html_Then_Html_Encodes_It()
        {
            var htmlSearchTerm = "<script>alert('hi');</script>";
            var filterModel    = new ApprenticesFilterModel
            {
                SearchTerm       = htmlSearchTerm,
                SelectedEmployer = htmlSearchTerm,
                SelectedCourse   = htmlSearchTerm
            };

            filterModel.FiltersUsedMessage.Value.Should().Be($"matching <strong>‘{WebUtility.HtmlEncode(htmlSearchTerm)}’</strong>, <strong>{WebUtility.HtmlEncode(htmlSearchTerm)}</strong> and <strong>{WebUtility.HtmlEncode(htmlSearchTerm)}</strong>");
        }
Пример #20
0
        public void And_Is_First_Page_Then_No_Previous()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 1,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 6
            };

            var pageLinks = filterModel.PageLinks.ToList();

            pageLinks.First().Label.Should().Be(1.ToString());
        }
Пример #21
0
 public void Then_Contains_Item_For_Each_Search_And_Filter_Value(
     ApprenticesFilterModel filterModel)
 {
     filterModel.RouteData.Should().BeEquivalentTo(new Dictionary <string, string>
     {
         { nameof(filterModel.SearchTerm), filterModel.SearchTerm },
         { nameof(filterModel.SelectedProvider), filterModel.SelectedProvider },
         { nameof(filterModel.SelectedCourse), filterModel.SelectedCourse },
         { nameof(filterModel.SelectedStatus), filterModel.SelectedStatus.ToString() },
         { nameof(filterModel.SelectedEndDate), filterModel.SelectedEndDate.Value.ToString("yyyy-MM-dd") }
     });
 }
Пример #22
0
        public void And_More_Than_5_Pages_Then_Only_5_PageLinks()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 1,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 10
            };

            filterModel.PageLinks.Count(link =>
                                        link.Label.ToUpper() != "PREVIOUS" &&
                                        link.Label.ToUpper() != "NEXT")
            .Should().Be(5);
        }
Пример #23
0
        public void And_1_Page_Then_No_Next_Or_Previous()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 1,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage - 1
            };

            var pageLinks = filterModel.PageLinks.ToList();

            pageLinks.Any(link => link.Label.ToUpper() == "PREVIOUS").Should().BeFalse();
            pageLinks.Any(link => link.Label.ToUpper() == "NEXT").Should().BeFalse();
        }
        public void And_No_SortField_Then_Should_Set_ReverseSort(
            string sortField,
            ApprenticesFilterModel model)
        {
            //Arrange
            model.SortField = null;
            var expected = !model.ReverseSort;

            //Act
            var actual = model.BuildSortRouteData(sortField);

            //Assert
            Assert.AreEqual(expected.ToString(), actual[nameof(model.ReverseSort)]);
        }
Пример #25
0
        public void And_Search_And_SelectedProvider_Then_SearchTerm_And_SelectedProvider(
            string searchTerm,
            string selectedProvider)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SearchTerm       = searchTerm,
                SelectedProvider = selectedProvider
            };

            filterModel.FiltersUsedMessage.Value
            .Should().Be($"matching <strong>‘{searchTerm}’</strong>" +
                         $" and <strong>{selectedProvider}</strong>");
        }
Пример #26
0
        public void And_PageNumber_3_Then_Sets_Current_On_3()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 3,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 3
            };

            var pageLinks = filterModel.PageLinks.Where(link =>
                                                        link.Label.ToUpper() != "PREVIOUS" &&
                                                        link.Label.ToUpper() != "NEXT").ToList();

            pageLinks[0].IsCurrent.Should().BeNull();
            pageLinks[1].IsCurrent.Should().BeNull();
            pageLinks[2].IsCurrent.Should().BeTrue();
        }
Пример #27
0
        public void And_Not_Last_Page_Then_Adds_Next()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 1,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 6
            };

            var pageLinks = filterModel.PageLinks.ToList();

            pageLinks.Last().Label.Should().Be("Next");
            pageLinks.Last().AriaLabel.Should().Be("Next page");
            pageLinks.Last().RouteData.Should()
            .BeEquivalentTo(pageLinks.Single(link =>
                                             link.Label == (filterModel.PageNumber + 1).ToString()).RouteData);
        }
Пример #28
0
        public void And_Not_First_Page_Then_Adds_Previous()
        {
            var filterModel = new ApprenticesFilterModel
            {
                PageNumber = 2,
                TotalNumberOfApprenticeshipsFound = Constants.ApprenticesSearch.NumberOfApprenticesPerSearchPage * 6
            };

            var pageLinks = filterModel.PageLinks.ToList();

            pageLinks.First().Label.Should().Be("Previous");
            pageLinks.First().AriaLabel.Should().Be("Previous page");
            pageLinks.First().RouteData.Should()
            .BeEquivalentTo(pageLinks.Single(link =>
                                             link.Label == "1").RouteData);
        }
Пример #29
0
        public void And_Search_And_SelectedEmployer_And_SelectedCourse_Then_SearchTerm_Comma_SelectedEmployer_And_SelectedCourse(
            string searchTerm,
            string selectedEmployer,
            string selectedCourse)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SearchTerm       = searchTerm,
                SelectedEmployer = selectedEmployer,
                SelectedCourse   = selectedCourse
            };

            filterModel.FiltersUsedMessage.Value
            .Should().Be($"matching <strong>‘{searchTerm}’</strong>" +
                         $", <strong>{selectedEmployer}</strong>" +
                         $" and <strong>{selectedCourse}</strong>");
        }
Пример #30
0
        public void And_SelectedEmployer_And_SelectedCourse_And_SelectedStartDate_Then_SelectedEmployer_Comma_SelectedCourse_And_SelectedStartDate(
            string selectedEmployer,
            string selectedCourse,
            DateTime selectedStartDate)
        {
            var filterModel = new ApprenticesFilterModel
            {
                SelectedEmployer  = selectedEmployer,
                SelectedCourse    = selectedCourse,
                SelectedStartDate = selectedStartDate
            };

            filterModel.FiltersUsedMessage.Value
            .Should().Be($"matching <strong>{selectedEmployer}</strong>" +
                         $", <strong>{selectedCourse}</strong>" +
                         $" and <strong>{selectedStartDate.ToGdsFormatWithoutDay()}</strong>");
        }