@studyportals/fawkes 8.7.1-0 → 8.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/organisations-seo/index.d.ts +3 -3
- package/dist/organisations-seo/index.js +1 -1
- package/dist/programmes-seo/index.d.ts +5 -5
- package/dist/programmes-seo/index.js +1 -1
- package/dist/scholarships-seo/index.d.ts +4 -4
- package/dist/scholarships-seo/index.js +2 -2
- package/dist/sitemap-generator-seo/index.d.ts +14 -14
- package/dist/sitemap-generator-seo/index.js +5 -5
- package/dist/src/common/IDependencies.d.ts +1 -1
- package/dist/src/common/IPresenter.d.ts +1 -1
- package/dist/src/common/ISearchDependencies.d.ts +1 -1
- package/dist/src/common/ISeoDependencies.d.ts +2 -2
- package/dist/src/common/ISitemapDependencies.d.ts +2 -2
- package/dist/src/common/ISitemapUrlGenerator.d.ts +1 -1
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +1 -1
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +2 -2
- package/dist/src/common/rules/NoFiltersSelectedRule.d.ts +2 -2
- package/dist/src/common/rules/OnlineAttendanceRule.d.ts +1 -1
- package/dist/src/common/rules/OnlineAttendanceRule.js +1 -1
- package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +2 -2
- package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +2 -2
- package/dist/src/organisations/IOrganisationSearchApplicationState.d.ts +1 -1
- package/dist/src/organisations/ISeoSortingState.d.ts +1 -1
- package/dist/src/organisations/SearchIndexabilityManager.d.ts +4 -4
- package/dist/src/organisations/SearchIndexabilityManager.js +2 -2
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +3 -3
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +3 -3
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +1 -1
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +1 -1
- package/dist/src/organisations/policies/our-picks/Area.d.ts +5 -5
- package/dist/src/organisations/policies/our-picks/Area.js +6 -6
- package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +7 -7
- package/dist/src/organisations/policies/our-picks/AreaAttendance.js +9 -9
- package/dist/src/organisations/policies/our-picks/Attendance.d.ts +6 -6
- package/dist/src/organisations/policies/our-picks/Attendance.js +7 -7
- package/dist/src/organisations/policies/our-picks/Continent.d.ts +5 -5
- package/dist/src/organisations/policies/our-picks/Continent.js +6 -6
- package/dist/src/organisations/policies/our-picks/Country.d.ts +5 -5
- package/dist/src/organisations/policies/our-picks/Country.js +6 -6
- package/dist/src/organisations/policies/our-picks/CountryAreaCity.d.ts +6 -6
- package/dist/src/organisations/policies/our-picks/CountryAreaCity.js +7 -7
- package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +7 -7
- package/dist/src/organisations/policies/our-picks/CountryAttendance.js +9 -9
- package/dist/src/organisations/policies/our-picks/CountryCity.d.ts +6 -6
- package/dist/src/organisations/policies/our-picks/CountryCity.js +7 -7
- package/dist/src/organisations/policies/our-picks/Unfiltered.d.ts +4 -4
- package/dist/src/organisations/policies/our-picks/Unfiltered.js +4 -4
- package/dist/src/organisations/policies/ranked/RankedArea.d.ts +4 -4
- package/dist/src/organisations/policies/ranked/RankedArea.js +4 -4
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +5 -5
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +6 -6
- package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +5 -5
- package/dist/src/organisations/policies/ranked/RankedAttendance.js +5 -5
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +5 -5
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +6 -6
- package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +4 -4
- package/dist/src/organisations/policies/ranked/RankedContinent.js +4 -4
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +6 -6
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +7 -7
- package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +4 -4
- package/dist/src/organisations/policies/ranked/RankedCountry.js +4 -4
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +5 -5
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +6 -6
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +4 -4
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +5 -5
- package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +4 -4
- package/dist/src/organisations/policies/ranked/RankedDiscipline.js +4 -4
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +3 -3
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +2 -2
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +3 -3
- package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +1 -1
- package/dist/src/organisations/rules/ContinentIsEuropeRule.js +1 -1
- package/dist/src/organisations/rules/ExcludeByIdForCitiesRule.d.ts +3 -3
- package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.d.ts +3 -3
- package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.js +1 -1
- package/dist/src/organisations/rules/MinimumAmountOfResultsRule.d.ts +4 -4
- package/dist/src/organisations/rules/MinimumAmountOfResultsRule.js +1 -1
- package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +2 -2
- package/dist/src/organisations/types/IOrganisationSearchDependencies.d.ts +2 -2
- package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +3 -3
- package/dist/src/presenters/AreaPresenter.d.ts +1 -1
- package/dist/src/presenters/AttendancePresenter.d.ts +1 -1
- package/dist/src/presenters/CityPresenter.d.ts +1 -1
- package/dist/src/presenters/ContinentPresenter.d.ts +1 -1
- package/dist/src/presenters/CountryPresenter.d.ts +1 -1
- package/dist/src/presenters/DegreePresenter.d.ts +1 -1
- package/dist/src/presenters/DisciplinePresenter.d.ts +1 -1
- package/dist/src/presenters/DurationPresenter.d.ts +1 -1
- package/dist/src/presenters/EducationalFormPresenter.d.ts +1 -1
- package/dist/src/presenters/FormatPresenter.d.ts +1 -1
- package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +1 -1
- package/dist/src/presenters/TuitionFeePresenter.d.ts +1 -1
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +2 -2
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +1 -1
- package/dist/src/programmes/BaseProgrammeRule.d.ts +2 -2
- package/dist/src/programmes/IProgrammeRule.d.ts +2 -2
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +3 -3
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +1 -1
- package/dist/src/programmes/SearchIndexabilityManager.d.ts +4 -4
- package/dist/src/programmes/SearchIndexabilityManager.js +1 -1
- package/dist/src/programmes/policies/Area.d.ts +3 -3
- package/dist/src/programmes/policies/Area.js +4 -4
- package/dist/src/programmes/policies/Attendance.d.ts +4 -4
- package/dist/src/programmes/policies/Attendance.js +5 -5
- package/dist/src/programmes/policies/AttendanceArea.d.ts +4 -4
- package/dist/src/programmes/policies/AttendanceArea.js +6 -6
- package/dist/src/programmes/policies/AttendanceContinent.d.ts +4 -4
- package/dist/src/programmes/policies/AttendanceContinent.js +6 -6
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +2 -2
- package/dist/src/programmes/policies/AttendanceDegree.js +5 -5
- package/dist/src/programmes/policies/AttendanceDuration.d.ts +5 -5
- package/dist/src/programmes/policies/AttendanceDuration.js +7 -7
- package/dist/src/programmes/policies/AttendanceFormat.d.ts +4 -4
- package/dist/src/programmes/policies/AttendanceFormat.js +6 -6
- package/dist/src/programmes/policies/Continent.d.ts +3 -3
- package/dist/src/programmes/policies/Continent.js +4 -4
- package/dist/src/programmes/policies/ContinentDuration.d.ts +3 -3
- package/dist/src/programmes/policies/ContinentDuration.js +5 -5
- package/dist/src/programmes/policies/ContinentFormat.d.ts +3 -3
- package/dist/src/programmes/policies/ContinentFormat.js +5 -5
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.d.ts +4 -4
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.js +6 -6
- package/dist/src/programmes/policies/Country.d.ts +3 -3
- package/dist/src/programmes/policies/Country.js +4 -4
- package/dist/src/programmes/policies/CountryAttendance.d.ts +4 -4
- package/dist/src/programmes/policies/CountryAttendance.js +6 -6
- package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +4 -4
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +7 -7
- package/dist/src/programmes/policies/CountryDegree.d.ts +2 -2
- package/dist/src/programmes/policies/CountryDegree.js +5 -5
- package/dist/src/programmes/policies/CountryDuration.d.ts +3 -3
- package/dist/src/programmes/policies/CountryDuration.js +5 -5
- package/dist/src/programmes/policies/CountryDurationDegree.d.ts +3 -3
- package/dist/src/programmes/policies/CountryDurationDegree.js +6 -6
- package/dist/src/programmes/policies/CountryEducationalForm.d.ts +2 -2
- package/dist/src/programmes/policies/CountryEducationalForm.js +5 -5
- package/dist/src/programmes/policies/CountryFormat.d.ts +3 -3
- package/dist/src/programmes/policies/CountryFormat.js +5 -5
- package/dist/src/programmes/policies/CountrySpecialProgrammes.d.ts +4 -4
- package/dist/src/programmes/policies/CountrySpecialProgrammes.js +6 -6
- package/dist/src/programmes/policies/Degree.d.ts +3 -3
- package/dist/src/programmes/policies/Degree.js +4 -4
- package/dist/src/programmes/policies/DegreeArea.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeArea.js +5 -5
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +4 -4
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +7 -7
- package/dist/src/programmes/policies/DegreeAttendanceFormat.d.ts +4 -4
- package/dist/src/programmes/policies/DegreeAttendanceFormat.js +7 -7
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.d.ts +4 -4
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.js +7 -7
- package/dist/src/programmes/policies/DegreeContinent.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeContinent.js +5 -5
- package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeCountryAttendance.js +6 -6
- package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeCountryDiscipline.js +6 -6
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +6 -6
- package/dist/src/programmes/policies/DegreeDuration.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeDuration.js +5 -5
- package/dist/src/programmes/policies/DegreeFormat.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeFormat.js +5 -5
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.js +5 -5
- package/dist/src/programmes/policies/DegreeTuitionFee.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeTuitionFee.js +5 -5
- package/dist/src/programmes/policies/DegreeTuitionFeeArea.d.ts +3 -3
- package/dist/src/programmes/policies/DegreeTuitionFeeArea.js +6 -6
- package/dist/src/programmes/policies/DegreeTuitionFeeAttendance.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeTuitionFeeAttendance.js +7 -7
- package/dist/src/programmes/policies/DegreeTuitionFeeContinent.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeTuitionFeeContinent.js +6 -6
- package/dist/src/programmes/policies/DegreeTuitionFeeFormat.d.ts +2 -2
- package/dist/src/programmes/policies/DegreeTuitionFeeFormat.js +6 -6
- package/dist/src/programmes/policies/Discipline.d.ts +3 -3
- package/dist/src/programmes/policies/Discipline.js +4 -4
- package/dist/src/programmes/policies/DisciplineAttendance.d.ts +4 -4
- package/dist/src/programmes/policies/DisciplineAttendance.js +6 -6
- package/dist/src/programmes/policies/DisciplineContinent.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineContinent.js +5 -5
- package/dist/src/programmes/policies/DisciplineContinentAttendance.d.ts +4 -4
- package/dist/src/programmes/policies/DisciplineContinentAttendance.js +7 -7
- package/dist/src/programmes/policies/DisciplineCountry.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineCountry.js +5 -5
- package/dist/src/programmes/policies/DisciplineCountryAttendance.d.ts +4 -4
- package/dist/src/programmes/policies/DisciplineCountryAttendance.js +7 -7
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +2 -2
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +6 -6
- package/dist/src/programmes/policies/DisciplineCountryFormat.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineCountryFormat.js +6 -6
- package/dist/src/programmes/policies/DisciplineDegree.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineDegree.js +5 -5
- package/dist/src/programmes/policies/DisciplineDuration.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineDuration.js +5 -5
- package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +2 -2
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +5 -5
- package/dist/src/programmes/policies/DisciplineFormat.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineFormat.js +5 -5
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.d.ts +3 -3
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.js +5 -5
- package/dist/src/programmes/policies/Duration.d.ts +3 -3
- package/dist/src/programmes/policies/Duration.js +4 -4
- package/dist/src/programmes/policies/Format.d.ts +3 -3
- package/dist/src/programmes/policies/Format.js +4 -4
- package/dist/src/programmes/policies/SpecialProgrammes.d.ts +3 -3
- package/dist/src/programmes/policies/SpecialProgrammes.js +4 -4
- package/dist/src/programmes/policies/TuitionFee.d.ts +3 -3
- package/dist/src/programmes/policies/TuitionFee.js +4 -4
- package/dist/src/programmes/policies/TuitionFeeAttendance.d.ts +4 -4
- package/dist/src/programmes/policies/TuitionFeeAttendance.js +6 -6
- package/dist/src/programmes/policies/TuitionFeeAttendanceDiscipline.d.ts +4 -4
- package/dist/src/programmes/policies/TuitionFeeAttendanceDiscipline.js +7 -7
- package/dist/src/programmes/policies/TuitionFeeContinent.d.ts +3 -3
- package/dist/src/programmes/policies/TuitionFeeContinent.js +5 -5
- package/dist/src/programmes/policies/TuitionFeeCountry.d.ts +3 -3
- package/dist/src/programmes/policies/TuitionFeeCountry.js +5 -5
- package/dist/src/programmes/policies/TuitionFeeDiscipline.d.ts +3 -3
- package/dist/src/programmes/policies/TuitionFeeDiscipline.js +5 -5
- package/dist/src/programmes/policies/Unfiltered.d.ts +2 -2
- package/dist/src/programmes/policies/Unfiltered.js +2 -2
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.d.ts +2 -2
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +2 -2
- package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +2 -2
- package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +2 -2
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +2 -2
- package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableDegreeRule.js +1 -1
- package/dist/src/programmes/rules/IndexableDurationRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableDurationRule.js +1 -1
- package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableEducationalFormRule.js +1 -1
- package/dist/src/programmes/rules/IndexablePageNumberRule.js +1 -1
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +2 -2
- package/dist/src/programmes/rules/MinimumAmountOfResultsRule.d.ts +3 -3
- package/dist/src/programmes/rules/MinimumAmountOfResultsRule.js +1 -1
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +1 -1
- package/dist/src/programmes/rules/OneYearOnlyRule.d.ts +2 -2
- package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +1 -1
- package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +1 -1
- package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +1 -1
- package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +2 -2
- package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +1 -1
- package/dist/src/scholarships/SearchIndexabilityManager.d.ts +5 -5
- package/dist/src/scholarships/SearchIndexabilityManager.js +1 -1
- package/dist/src/scholarships/policies/Area.d.ts +3 -3
- package/dist/src/scholarships/policies/Area.js +4 -4
- package/dist/src/scholarships/policies/Country.d.ts +3 -3
- package/dist/src/scholarships/policies/Country.js +4 -4
- package/dist/src/scholarships/policies/Discipline.d.ts +4 -4
- package/dist/src/scholarships/policies/Discipline.js +5 -5
- package/dist/src/scholarships/policies/DisciplineCountry.d.ts +3 -3
- package/dist/src/scholarships/policies/DisciplineCountry.js +5 -5
- package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +2 -2
- package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +2 -2
- package/dist/src/scholarships/policies/Unfiltered.d.ts +2 -2
- package/dist/src/scholarships/policies/Unfiltered.js +2 -2
- package/dist/src/scholarships/policies/UniversityCountry.d.ts +3 -3
- package/dist/src/scholarships/policies/UniversityCountry.js +4 -4
- package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +3 -3
- package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +1 -1
- package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +3 -3
- package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +3 -3
- package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +3 -3
- package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +3 -3
- package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +1 -1
- package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +2 -2
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +3 -3
- package/dist/src/sitemap-generator/IRankingApiClient.d.ts +1 -1
- package/dist/src/sitemap-generator/ISearchApiClient.d.ts +1 -1
- package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +3 -3
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +4 -4
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +8 -8
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +3 -3
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +13 -13
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +3 -3
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +7 -7
- package/dist/src/structured-data/OrganisationStructuredDataFactory.d.ts +1 -1
- package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +1 -1
- package/package.json +1 -1
- package/dist/tests/common/rules/NoFiltersSelectedRule.test.d.mts +0 -1
- package/dist/tests/common/rules/NoFiltersSelectedRule.test.mjs +0 -40
- package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.d.mts +0 -1
- package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.mjs +0 -70
- package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.d.mts +0 -1
- package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.mjs +0 -54
- package/dist/tests/organisations/policies/our-picks/Area.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/Area.test.mjs +0 -125
- package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.mjs +0 -238
- package/dist/tests/organisations/policies/our-picks/Attendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/Attendance.test.mjs +0 -119
- package/dist/tests/organisations/policies/our-picks/Continent.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/Continent.test.mjs +0 -105
- package/dist/tests/organisations/policies/our-picks/Country.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/Country.test.mjs +0 -109
- package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.mjs +0 -152
- package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.mjs +0 -223
- package/dist/tests/organisations/policies/our-picks/CountryCity.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/CountryCity.test.mjs +0 -109
- package/dist/tests/organisations/policies/our-picks/Unfiltered.test.d.mts +0 -1
- package/dist/tests/organisations/policies/our-picks/Unfiltered.test.mjs +0 -60
- package/dist/tests/organisations/policies/ranked/RankedArea.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedArea.test.mjs +0 -149
- package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.mjs +0 -237
- package/dist/tests/organisations/policies/ranked/RankedAttendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedAttendance.test.mjs +0 -139
- package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.mjs +0 -224
- package/dist/tests/organisations/policies/ranked/RankedContinent.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedContinent.test.mjs +0 -125
- package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.mjs +0 -253
- package/dist/tests/organisations/policies/ranked/RankedCountry.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedCountry.test.mjs +0 -131
- package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.mjs +0 -230
- package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.mjs +0 -197
- package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.mjs +0 -124
- package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.d.mts +0 -1
- package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.mjs +0 -75
- package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.mjs +0 -59
- package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.mjs +0 -77
- package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.mjs +0 -77
- package/dist/tests/organisations/rules/OnlineAttendanceRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/OnlineAttendanceRule.test.mjs +0 -59
- package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.mjs +0 -59
- package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.mjs +0 -59
- package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.d.mts +0 -1
- package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.mjs +0 -59
- package/dist/tests/organisations/utils/SearchDependencies.util.d.mts +0 -20
- package/dist/tests/organisations/utils/SearchDependencies.util.mjs +0 -88
- package/dist/tests/organisations/utils/SitemapDependencies.util.d.mts +0 -18
- package/dist/tests/organisations/utils/SitemapDependencies.util.mjs +0 -54
- package/dist/tests/presenters/AreaPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/AreaPresenter.test.mjs +0 -46
- package/dist/tests/presenters/AttendancePresenter.test.d.mts +0 -1
- package/dist/tests/presenters/AttendancePresenter.test.mjs +0 -41
- package/dist/tests/presenters/ContinentPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/ContinentPresenter.test.mjs +0 -44
- package/dist/tests/presenters/CountryPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/CountryPresenter.test.mjs +0 -50
- package/dist/tests/presenters/DegreePresenter.test.d.mts +0 -1
- package/dist/tests/presenters/DegreePresenter.test.mjs +0 -51
- package/dist/tests/presenters/DisciplinePresenter.test.d.mts +0 -1
- package/dist/tests/presenters/DisciplinePresenter.test.mjs +0 -40
- package/dist/tests/presenters/DurationPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/DurationPresenter.test.mjs +0 -64
- package/dist/tests/presenters/EducationalFormPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/EducationalFormPresenter.test.mjs +0 -60
- package/dist/tests/presenters/FormatPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/FormatPresenter.test.mjs +0 -43
- package/dist/tests/presenters/SpecialProgrammesPresenter.test.d.mts +0 -1
- package/dist/tests/presenters/SpecialProgrammesPresenter.test.mjs +0 -66
- package/dist/tests/presenters/TuitionFeePresenter.test.d.mts +0 -1
- package/dist/tests/presenters/TuitionFeePresenter.test.mjs +0 -52
- package/dist/tests/programmes/policies/Area.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Area.test.mjs +0 -153
- package/dist/tests/programmes/policies/Attendance.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Attendance.test.mjs +0 -173
- package/dist/tests/programmes/policies/AttendanceDegree.test.d.mts +0 -1
- package/dist/tests/programmes/policies/AttendanceDegree.test.mjs +0 -291
- package/dist/tests/programmes/policies/Continent.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Continent.test.mjs +0 -169
- package/dist/tests/programmes/policies/Country.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Country.test.mjs +0 -164
- package/dist/tests/programmes/policies/CountryAttendance.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryAttendance.test.mjs +0 -251
- package/dist/tests/programmes/policies/CountryAttendanceDegree.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryAttendanceDegree.test.mjs +0 -337
- package/dist/tests/programmes/policies/CountryDegree.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryDegree.test.mjs +0 -262
- package/dist/tests/programmes/policies/CountryDuration.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryDuration.test.mjs +0 -234
- package/dist/tests/programmes/policies/CountryDurationDegree.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryDurationDegree.test.mjs +0 -304
- package/dist/tests/programmes/policies/CountryEducationalForm.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryEducationalForm.test.mjs +0 -260
- package/dist/tests/programmes/policies/CountryFormat.test.d.mts +0 -1
- package/dist/tests/programmes/policies/CountryFormat.test.mjs +0 -253
- package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.mjs +0 -179
- package/dist/tests/programmes/policies/DegreeCountryAttendance.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DegreeCountryAttendance.test.mjs +0 -267
- package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.mjs +0 -217
- package/dist/tests/programmes/policies/DegreeFormat.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DegreeFormat.test.mjs +0 -221
- package/dist/tests/programmes/policies/Discipline.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Discipline.test.mjs +0 -159
- package/dist/tests/programmes/policies/DisciplineAttendance.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineAttendance.test.mjs +0 -292
- package/dist/tests/programmes/policies/DisciplineContinent.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineContinent.test.mjs +0 -253
- package/dist/tests/programmes/policies/DisciplineCountry.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineCountry.test.mjs +0 -244
- package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.mjs +0 -345
- package/dist/tests/programmes/policies/DisciplineDegree.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineDegree.test.mjs +0 -273
- package/dist/tests/programmes/policies/DisciplineDuration.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineDuration.test.mjs +0 -278
- package/dist/tests/programmes/policies/DisciplineEducationalForm.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineEducationalForm.test.mjs +0 -302
- package/dist/tests/programmes/policies/DisciplineFormat.test.d.mts +0 -1
- package/dist/tests/programmes/policies/DisciplineFormat.test.mjs +0 -266
- package/dist/tests/programmes/policies/Duration.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Duration.test.mjs +0 -179
- package/dist/tests/programmes/policies/Format.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Format.test.mjs +0 -117
- package/dist/tests/programmes/policies/NewRulesValidation.test.d.mts +0 -1
- package/dist/tests/programmes/policies/NewRulesValidation.test.mjs +0 -320
- package/dist/tests/programmes/policies/SpecialProgrammes.test.d.mts +0 -1
- package/dist/tests/programmes/policies/SpecialProgrammes.test.mjs +0 -171
- package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.d.mts +0 -1
- package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.mjs +0 -360
- package/dist/tests/programmes/policies/TuitionFeeContinent.test.d.mts +0 -1
- package/dist/tests/programmes/policies/TuitionFeeContinent.test.mjs +0 -293
- package/dist/tests/programmes/policies/TuitionFeeCountry.test.d.mts +0 -1
- package/dist/tests/programmes/policies/TuitionFeeCountry.test.mjs +0 -266
- package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.d.mts +0 -1
- package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.mjs +0 -267
- package/dist/tests/programmes/policies/Unfiltered.test.d.mts +0 -1
- package/dist/tests/programmes/policies/Unfiltered.test.mjs +0 -90
- package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.mjs +0 -27
- package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.mjs +0 -121
- package/dist/tests/programmes/rules/DegreeDisciplineRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/DegreeDisciplineRule.test.mjs +0 -169
- package/dist/tests/programmes/rules/IndexableDegreeRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/IndexableDegreeRule.test.mjs +0 -101
- package/dist/tests/programmes/rules/IndexableDurationRule.test..d.mts +0 -1
- package/dist/tests/programmes/rules/IndexableDurationRule.test..mjs +0 -25
- package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.mjs +0 -27
- package/dist/tests/programmes/rules/IndexablePageNumberRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/IndexablePageNumberRule.test.mjs +0 -51
- package/dist/tests/programmes/rules/MbaDegreeRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/MbaDegreeRule.test.mjs +0 -55
- package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.mjs +0 -53
- package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.mjs +0 -79
- package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.mjs +0 -57
- package/dist/tests/programmes/rules/OneYearDurationRule.test..d.mts +0 -1
- package/dist/tests/programmes/rules/OneYearDurationRule.test..mjs +0 -40
- package/dist/tests/programmes/rules/OnlineAttendanceRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/OnlineAttendanceRule.test.mjs +0 -69
- package/dist/tests/programmes/rules/PartTimeFormatRule.test.d.mts +0 -1
- package/dist/tests/programmes/rules/PartTimeFormatRule.test.mjs +0 -27
- package/dist/tests/programmes/utils/SearchDependencies.util.d.mts +0 -16
- package/dist/tests/programmes/utils/SearchDependencies.util.mjs +0 -73
- package/dist/tests/programmes/utils/SitemapDependencies.util.d.mts +0 -15
- package/dist/tests/programmes/utils/SitemapDependencies.util.mjs +0 -49
- package/dist/tests/scholarships/policies/Area.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/Area.test.mjs +0 -121
- package/dist/tests/scholarships/policies/Country.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/Country.test.mjs +0 -97
- package/dist/tests/scholarships/policies/Discipline.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/Discipline.test.mjs +0 -93
- package/dist/tests/scholarships/policies/DisciplineCountry.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/DisciplineCountry.test.mjs +0 -151
- package/dist/tests/scholarships/policies/Unfiltered.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/Unfiltered.test.mjs +0 -44
- package/dist/tests/scholarships/policies/UniversityCountry.test.d.mts +0 -1
- package/dist/tests/scholarships/policies/UniversityCountry.test.mjs +0 -115
- package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.d.mts +0 -1
- package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.mjs +0 -64
- package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.d.mts +0 -1
- package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.mjs +0 -62
- package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.d.mts +0 -1
- package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.mjs +0 -114
- package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.d.mts +0 -1
- package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.mjs +0 -62
- package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.d.mts +0 -1
- package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.mjs +0 -62
- package/dist/tests/scholarships/utils/SearchDependencies.util.d.mts +0 -16
- package/dist/tests/scholarships/utils/SearchDependencies.util.mjs +0 -70
- package/dist/tests/scholarships/utils/SitemapDependencies.util.d.mts +0 -11
- package/dist/tests/scholarships/utils/SitemapDependencies.util.mjs +0 -33
- package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.d.mts +0 -1
- package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.mjs +0 -82
- package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.d.mts +0 -1
- package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.mjs +0 -85
- package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.d.mts +0 -1
- package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.mjs +0 -77
- package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.d.mts +0 -1
- package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.mjs +0 -60
- package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.d.mts +0 -1
- package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.mjs +0 -334
- package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.d.mts +0 -1
- package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.mjs +0 -562
- package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.d.mts +0 -1
- package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.mjs +0 -292
- package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.d.mts +0 -1
- package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.mjs +0 -258
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
|
2
|
-
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
3
|
-
import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
|
|
4
|
-
import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
|
|
5
|
-
import { CountryAttendance } from '@/programmes/policies/CountryAttendance';
|
|
6
|
-
import { PortalType } from '@studyportals/domain-client';
|
|
7
|
-
import { CountryPresenter } from '@/presenters/CountryPresenter';
|
|
8
|
-
import { AttendancePresenter } from '@/presenters/AttendancePresenter';
|
|
9
|
-
describe('Policy:CountryAttendance', () => {
|
|
10
|
-
describe('shouldIndex', () => {
|
|
11
|
-
let searchDependenciesHelper;
|
|
12
|
-
let countryAttendancePolicy;
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
searchDependenciesHelper = new SearchDependencies();
|
|
15
|
-
countryAttendancePolicy = new CountryAttendance(searchDependenciesHelper.dependencies);
|
|
16
|
-
searchDependenciesHelper.setResultsCount(10);
|
|
17
|
-
searchDependenciesHelper.setPageNumber(1);
|
|
18
|
-
searchDependenciesHelper.setPortalType(PortalType.PHD);
|
|
19
|
-
});
|
|
20
|
-
it('Should return true when all conditions are met', async () => {
|
|
21
|
-
const countryId = '30'; // UK
|
|
22
|
-
const attendance = 'online';
|
|
23
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
24
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
25
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
26
|
-
]));
|
|
27
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
28
|
-
expect(result).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
it('Should return false when multiple countries are selected', async () => {
|
|
31
|
-
const firstCountryId = '30'; // UK
|
|
32
|
-
const secondCountryId = '21'; // Portugal
|
|
33
|
-
const attendance = 'online';
|
|
34
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
35
|
-
[FilterKey.COUNTRY, [firstCountryId, secondCountryId]],
|
|
36
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
37
|
-
]));
|
|
38
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
39
|
-
expect(result).toBe(false);
|
|
40
|
-
});
|
|
41
|
-
it('Should return false when multiple attendance values are selected', async () => {
|
|
42
|
-
const countryId = '30'; // UK
|
|
43
|
-
const firstAttendance = 'online';
|
|
44
|
-
const secondAttendance = 'face2face';
|
|
45
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
46
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
47
|
-
[FilterKey.DELIVERY_METHOD, [firstAttendance, secondAttendance]]
|
|
48
|
-
]));
|
|
49
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
50
|
-
expect(result).toBe(false);
|
|
51
|
-
});
|
|
52
|
-
it('Should return false when no attendance values are selected', async () => {
|
|
53
|
-
const countryId = '30'; // UK
|
|
54
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.COUNTRY, [countryId]]]));
|
|
55
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
56
|
-
expect(result).toBe(false);
|
|
57
|
-
});
|
|
58
|
-
it('Should return false when no countries are selected', async () => {
|
|
59
|
-
const degree = 'phd';
|
|
60
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DEGREE_TYPE, [degree]]]));
|
|
61
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
62
|
-
expect(result).toBe(false);
|
|
63
|
-
});
|
|
64
|
-
it('Should return false when other filters are selected', async () => {
|
|
65
|
-
const countryId = '30'; // UK
|
|
66
|
-
const attendance = 'online';
|
|
67
|
-
const disciplineId = '54'; // Agriculture & Forestry
|
|
68
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
69
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
70
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
71
|
-
[FilterKey.DISCIPLINES, [disciplineId]]
|
|
72
|
-
]));
|
|
73
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
74
|
-
expect(result).toBe(false);
|
|
75
|
-
});
|
|
76
|
-
it('Should return false when attendance is not online', async () => {
|
|
77
|
-
const countryId = '30'; // UK
|
|
78
|
-
const attendance = 'blended';
|
|
79
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
80
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
81
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
82
|
-
]));
|
|
83
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
84
|
-
expect(result).toBe(false);
|
|
85
|
-
});
|
|
86
|
-
it('Should return false when number of results is less than 7', async () => {
|
|
87
|
-
const countryId = '30'; // UK
|
|
88
|
-
const degree = 'phd';
|
|
89
|
-
searchDependenciesHelper.setResultsCount(6);
|
|
90
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
91
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
92
|
-
[FilterKey.DELIVERY_METHOD, [degree]]
|
|
93
|
-
]));
|
|
94
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
95
|
-
expect(result).toBe(false);
|
|
96
|
-
});
|
|
97
|
-
it('Should return false when page number is higher than 2', async () => {
|
|
98
|
-
const countryId = '30'; // UK
|
|
99
|
-
const attendance = 'online';
|
|
100
|
-
searchDependenciesHelper.setPageNumber(3);
|
|
101
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
102
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
103
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
104
|
-
]));
|
|
105
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
106
|
-
expect(result).toBe(false);
|
|
107
|
-
});
|
|
108
|
-
it('Should return false when portal is distance learning', async () => {
|
|
109
|
-
const countryId = '30'; // UK
|
|
110
|
-
const attendance = 'online';
|
|
111
|
-
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
112
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
113
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
114
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
115
|
-
]));
|
|
116
|
-
const result = await countryAttendancePolicy.shouldIndex();
|
|
117
|
-
expect(result).toBe(false);
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
describe('generateUrls', () => {
|
|
121
|
-
let sitemapDependenciesHelper;
|
|
122
|
-
let countryAttendancePolicy;
|
|
123
|
-
beforeEach(() => {
|
|
124
|
-
sitemapDependenciesHelper = new SitemapDependencies();
|
|
125
|
-
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
126
|
-
countryAttendancePolicy = new CountryAttendance(sitemapDependenciesHelper.dependencies);
|
|
127
|
-
CountryPresenter.getInstance = vi.fn().mockReturnValue({
|
|
128
|
-
getFragments: vi.fn().mockReturnValue([
|
|
129
|
-
{ id: '30', path: 'uk' },
|
|
130
|
-
{ id: '21', path: 'portugal' },
|
|
131
|
-
{ id: '56', path: 'usa' },
|
|
132
|
-
{ id: '82', path: 'netherlands' }
|
|
133
|
-
])
|
|
134
|
-
});
|
|
135
|
-
AttendancePresenter.getInstance = vi.fn().mockReturnValue({
|
|
136
|
-
getFragments: vi.fn().mockReturnValue([
|
|
137
|
-
{ id: 'online', path: 'online' },
|
|
138
|
-
{ id: 'face2face', path: 'on-campus' },
|
|
139
|
-
{ id: 'blended', path: 'blended' }
|
|
140
|
-
])
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
afterEach(() => {
|
|
144
|
-
sitemapDependenciesHelper.resetMocks();
|
|
145
|
-
});
|
|
146
|
-
it('Should generate URLs for all valid country-attendance combinations', async () => {
|
|
147
|
-
// Mock the checkRulesForSitemap to only allow online attendance (due to OnlineAttendanceRule)
|
|
148
|
-
const resultMap = new Map();
|
|
149
|
-
// Allow only online attendance (the rule check should pass only for online)
|
|
150
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
151
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
152
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
|
|
153
|
-
resultMap.set(key, attendanceId === 'online');
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
157
|
-
// Call the method via reflection since it's protected
|
|
158
|
-
const urls = await countryAttendancePolicy.generateUrls();
|
|
159
|
-
// Verify only online attendance URLs were included
|
|
160
|
-
expect(urls).toHaveLength(4);
|
|
161
|
-
expect(urls).toContain('online/uk');
|
|
162
|
-
expect(urls).toContain('online/portugal');
|
|
163
|
-
expect(urls).toContain('online/netherlands');
|
|
164
|
-
expect(urls).toContain('online/usa');
|
|
165
|
-
expect(urls).not.toContain('on-campus/uk');
|
|
166
|
-
expect(urls).not.toContain('blended/uk');
|
|
167
|
-
});
|
|
168
|
-
it('Should exclude certain country-attendance combinations', async () => {
|
|
169
|
-
// Mock to exclude Australia
|
|
170
|
-
const resultMap = new Map();
|
|
171
|
-
// Set up rules to exclude Australia for all attendance modes
|
|
172
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
173
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
174
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
|
|
175
|
-
// Exclude UK (30) and only allow online for others
|
|
176
|
-
resultMap.set(key, countryId !== '30' && attendanceId === 'online');
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
180
|
-
const urls = await countryAttendancePolicy.generateUrls();
|
|
181
|
-
// Should only include Portgual, Netherlands and US
|
|
182
|
-
expect(urls).toHaveLength(3);
|
|
183
|
-
expect(urls).toContain('online/portugal');
|
|
184
|
-
expect(urls).toContain('online/usa');
|
|
185
|
-
expect(urls).not.toContain('online/uk');
|
|
186
|
-
});
|
|
187
|
-
it('Should exclude all URLs when all checks fail', async () => {
|
|
188
|
-
// Create a map that returns false for all combinations
|
|
189
|
-
const resultMap = new Map();
|
|
190
|
-
// Set all combinations to fail
|
|
191
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
192
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
193
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
|
|
194
|
-
resultMap.set(key, false);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap, false);
|
|
198
|
-
const urls = await countryAttendancePolicy.generateUrls();
|
|
199
|
-
// Should include no URLs
|
|
200
|
-
expect(urls).toHaveLength(0);
|
|
201
|
-
});
|
|
202
|
-
it('Should handle empty fragments arrays', async () => {
|
|
203
|
-
// Mock the CountryPresenter to return empty fragments
|
|
204
|
-
CountryPresenter.getInstance.mockReturnValueOnce({
|
|
205
|
-
getFragments: vi.fn().mockReturnValue([])
|
|
206
|
-
});
|
|
207
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
208
|
-
const urls = await countryAttendancePolicy.generateUrls();
|
|
209
|
-
// Should return empty array
|
|
210
|
-
expect(urls).toHaveLength(0);
|
|
211
|
-
});
|
|
212
|
-
it('Should handle large number of combinations efficiently', async () => {
|
|
213
|
-
// Generate a large number of countries (50) and attendance modes (5)
|
|
214
|
-
const largeCountrySet = Array.from({ length: 50 }, (_, index) => ({
|
|
215
|
-
id: `${1000 + index}`,
|
|
216
|
-
path: `country-${1000 + index}`
|
|
217
|
-
}));
|
|
218
|
-
const largeAttendanceSet = Array.from({ length: 5 }, (_, index) => ({
|
|
219
|
-
id: `attendance-${index}`,
|
|
220
|
-
path: `attendance-type-${index}`
|
|
221
|
-
}));
|
|
222
|
-
// Mock the presenters to return large sets
|
|
223
|
-
CountryPresenter.getInstance.mockReturnValueOnce({
|
|
224
|
-
getFragments: vi.fn().mockReturnValue(largeCountrySet)
|
|
225
|
-
});
|
|
226
|
-
AttendancePresenter.getInstance.mockReturnValueOnce({
|
|
227
|
-
getFragments: vi.fn().mockReturnValue(largeAttendanceSet)
|
|
228
|
-
});
|
|
229
|
-
// Mock to allow only specific combinations (countries divisible by 3, attendance index 0 or 2)
|
|
230
|
-
const resultMap = new Map();
|
|
231
|
-
for (let c = 0; c < largeCountrySet.length; c++) {
|
|
232
|
-
for (let a = 0; a < largeAttendanceSet.length; a++) {
|
|
233
|
-
const countryId = largeCountrySet[c].id;
|
|
234
|
-
const attendanceId = largeAttendanceSet[a].id;
|
|
235
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
|
|
236
|
-
// Only include countries where index is divisible by 3, and attendance indices 0 or 2
|
|
237
|
-
resultMap.set(key, c % 3 === 0 && (a === 0 || a === 2));
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
241
|
-
const urls = await countryAttendancePolicy.generateUrls();
|
|
242
|
-
// Should generate 17 countries (50/3 rounded up) * 2 attendance types
|
|
243
|
-
expect(urls).toHaveLength(34);
|
|
244
|
-
// Test some specific combinations
|
|
245
|
-
expect(urls).toContain('attendance-type-0/country-1000'); // First country, first attendance
|
|
246
|
-
expect(urls).toContain('attendance-type-2/country-1000'); // First country, third attendance
|
|
247
|
-
expect(urls).not.toContain('attendance-type-1/country-1000'); // First country, second attendance (filtered)
|
|
248
|
-
expect(urls).not.toContain('attendance-type-0/country-1001'); // Second country (filtered)
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
-
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
3
|
-
import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
|
|
4
|
-
import { CountryAttendanceDegree } from '@/programmes/policies/CountryAttendanceDegree';
|
|
5
|
-
import { PortalType } from '@studyportals/domain-client';
|
|
6
|
-
import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
|
|
7
|
-
import { CountryPresenter } from '@/presenters/CountryPresenter';
|
|
8
|
-
import { DegreePresenter } from '@/presenters/DegreePresenter';
|
|
9
|
-
import { AttendancePresenter } from '@/presenters/AttendancePresenter';
|
|
10
|
-
describe('Policy:CountryAttendanceDegree', () => {
|
|
11
|
-
describe('shouldIndex', () => {
|
|
12
|
-
let searchDependenciesHelper;
|
|
13
|
-
let countryAttendanceDegreePolicy;
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
searchDependenciesHelper = new SearchDependencies();
|
|
16
|
-
countryAttendanceDegreePolicy = new CountryAttendanceDegree(searchDependenciesHelper.dependencies);
|
|
17
|
-
searchDependenciesHelper.setResultsCount(10);
|
|
18
|
-
searchDependenciesHelper.setPageNumber(1);
|
|
19
|
-
searchDependenciesHelper.setPortalType(PortalType.SHORT);
|
|
20
|
-
});
|
|
21
|
-
it('Should return true when all conditions are met', async () => {
|
|
22
|
-
const countryId = '30'; // UK
|
|
23
|
-
const attendance = 'online';
|
|
24
|
-
const degree = 'mba';
|
|
25
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
26
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
27
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
28
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
29
|
-
]));
|
|
30
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
31
|
-
expect(result).toBe(true);
|
|
32
|
-
});
|
|
33
|
-
it('Should return false when multiple attendance values are selected', async () => {
|
|
34
|
-
const firstAttendance = 'online';
|
|
35
|
-
const secondAttendance = 'blended';
|
|
36
|
-
const countryId = '30'; // UK
|
|
37
|
-
const degree = 'mba';
|
|
38
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
39
|
-
[FilterKey.DELIVERY_METHOD, [firstAttendance, secondAttendance]],
|
|
40
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
41
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
42
|
-
]));
|
|
43
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
44
|
-
expect(result).toBe(false);
|
|
45
|
-
});
|
|
46
|
-
it('Should return false when multiple countries are selected', async () => {
|
|
47
|
-
const firstCountryId = '30'; // UK
|
|
48
|
-
const secondCountryId = '21'; // Portugal
|
|
49
|
-
const attendance = 'online';
|
|
50
|
-
const degree = 'mba';
|
|
51
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
52
|
-
[FilterKey.COUNTRY, [firstCountryId, secondCountryId]],
|
|
53
|
-
[FilterKey.DEGREE_TYPE, [degree]],
|
|
54
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
55
|
-
]));
|
|
56
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
57
|
-
expect(result).toBe(false);
|
|
58
|
-
});
|
|
59
|
-
it('Should return false when multiple degree values are selected', async () => {
|
|
60
|
-
const countryId = '30'; // UK
|
|
61
|
-
const attendance = 'online';
|
|
62
|
-
const firstDegree = 'mba';
|
|
63
|
-
const secondDegree = 'phd';
|
|
64
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
65
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
66
|
-
[FilterKey.DEGREE_TYPE, [firstDegree, secondDegree]],
|
|
67
|
-
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
68
|
-
]));
|
|
69
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
70
|
-
expect(result).toBe(false);
|
|
71
|
-
});
|
|
72
|
-
it('Should return false when no attendance values are selected', async () => {
|
|
73
|
-
const degree = 'mba';
|
|
74
|
-
const countryId = '30'; // UK
|
|
75
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
76
|
-
[FilterKey.DEGREE_TYPE, [degree]],
|
|
77
|
-
[FilterKey.COUNTRY, [countryId]]
|
|
78
|
-
]));
|
|
79
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
80
|
-
expect(result).toBe(false);
|
|
81
|
-
});
|
|
82
|
-
it('Should return false when no countries are selected', async () => {
|
|
83
|
-
const attendance = 'online';
|
|
84
|
-
const degree = 'mba';
|
|
85
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
86
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
87
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
88
|
-
]));
|
|
89
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
90
|
-
expect(result).toBe(false);
|
|
91
|
-
});
|
|
92
|
-
it('Should return false when no degree values are selected', async () => {
|
|
93
|
-
const attendance = 'online';
|
|
94
|
-
const countryId = '30'; // UK
|
|
95
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
96
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
97
|
-
[FilterKey.COUNTRY, [countryId]]
|
|
98
|
-
]));
|
|
99
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
100
|
-
expect(result).toBe(false);
|
|
101
|
-
});
|
|
102
|
-
it('Should return false when other filters are selected', async () => {
|
|
103
|
-
const countryId = '30'; // UK
|
|
104
|
-
const attendance = 'online';
|
|
105
|
-
const degree = 'mba';
|
|
106
|
-
const disciplineId = '12'; // Applied Sciences & Professions
|
|
107
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
108
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
109
|
-
[FilterKey.DEGREE_TYPE, [degree]],
|
|
110
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
111
|
-
[FilterKey.DISCIPLINES, [disciplineId]]
|
|
112
|
-
]));
|
|
113
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
114
|
-
expect(result).toBe(false);
|
|
115
|
-
});
|
|
116
|
-
it('Should return false when attendance is not online', async () => {
|
|
117
|
-
const countryId = '30'; // UK
|
|
118
|
-
const attendance = 'blended';
|
|
119
|
-
const degree = 'mba';
|
|
120
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
121
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
122
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
123
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
124
|
-
]));
|
|
125
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
126
|
-
expect(result).toBe(false);
|
|
127
|
-
});
|
|
128
|
-
it('Should return false when degree is not MBA', async () => {
|
|
129
|
-
const countryId = '30'; // UK
|
|
130
|
-
const attendance = 'online';
|
|
131
|
-
const degree = 'phd';
|
|
132
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
133
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
134
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
135
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
136
|
-
]));
|
|
137
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
138
|
-
expect(result).toBe(false);
|
|
139
|
-
});
|
|
140
|
-
it('Should return false when number of results is less than 7', async () => {
|
|
141
|
-
const countryId = '30'; // UK
|
|
142
|
-
const attendance = 'online';
|
|
143
|
-
const degree = 'phd';
|
|
144
|
-
searchDependenciesHelper.setResultsCount(6);
|
|
145
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
146
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
147
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
148
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
149
|
-
]));
|
|
150
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
151
|
-
expect(result).toBe(false);
|
|
152
|
-
});
|
|
153
|
-
it('Should return false when page number is higher than 2', async () => {
|
|
154
|
-
const countryId = '30'; // UK
|
|
155
|
-
const attendance = 'online';
|
|
156
|
-
const degree = 'mba';
|
|
157
|
-
searchDependenciesHelper.setPageNumber(10);
|
|
158
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
159
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
160
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
161
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
162
|
-
]));
|
|
163
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
164
|
-
expect(result).toBe(false);
|
|
165
|
-
});
|
|
166
|
-
it('Should return false when portal is distance learning', async () => {
|
|
167
|
-
const countryId = '30'; // UK
|
|
168
|
-
const attendance = 'online';
|
|
169
|
-
const degree = 'mba';
|
|
170
|
-
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
171
|
-
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
172
|
-
[FilterKey.COUNTRY, [countryId]],
|
|
173
|
-
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
174
|
-
[FilterKey.DEGREE_TYPE, [degree]]
|
|
175
|
-
]));
|
|
176
|
-
const result = await countryAttendanceDegreePolicy.shouldIndex();
|
|
177
|
-
expect(result).toBe(false);
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
describe('generateUrls', () => {
|
|
181
|
-
let sitemapDependenciesHelper;
|
|
182
|
-
let countryAttendanceDegreePolicy;
|
|
183
|
-
beforeEach(() => {
|
|
184
|
-
sitemapDependenciesHelper = new SitemapDependencies();
|
|
185
|
-
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
186
|
-
countryAttendanceDegreePolicy = new CountryAttendanceDegree(sitemapDependenciesHelper.dependencies);
|
|
187
|
-
CountryPresenter.getInstance = vi.fn().mockReturnValue({
|
|
188
|
-
getFragments: vi.fn().mockReturnValue([
|
|
189
|
-
{ id: '30', path: 'uk' },
|
|
190
|
-
{ id: '21', path: 'portugal' },
|
|
191
|
-
{ id: '56', path: 'usa' },
|
|
192
|
-
{ id: '82', path: 'netherlands' }
|
|
193
|
-
])
|
|
194
|
-
});
|
|
195
|
-
AttendancePresenter.getInstance = vi.fn().mockReturnValue({
|
|
196
|
-
getFragments: vi.fn().mockReturnValue([
|
|
197
|
-
{ id: 'online', path: 'online-programmes' },
|
|
198
|
-
{ id: 'face2face', path: 'on-campus-programmes' },
|
|
199
|
-
{ id: 'blended', path: 'blended-programmes' }
|
|
200
|
-
])
|
|
201
|
-
});
|
|
202
|
-
DegreePresenter.getInstance = vi.fn().mockReturnValue({
|
|
203
|
-
getFragments: vi.fn().mockReturnValue([
|
|
204
|
-
{ id: 'mba', path: 'mba' },
|
|
205
|
-
{ id: 'phd', path: 'phd' },
|
|
206
|
-
{ id: 'masters', path: 'masters' }
|
|
207
|
-
])
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
afterEach(() => {
|
|
211
|
-
sitemapDependenciesHelper.resetMocks();
|
|
212
|
-
});
|
|
213
|
-
it('Should generate URLs for all valid country-attendance-degree combinations', async () => {
|
|
214
|
-
// Mock the checkRulesForSitemap to only allow online attendance and MBA degree
|
|
215
|
-
const resultMap = new Map();
|
|
216
|
-
// Set rules: only allow online attendance and MBA degree
|
|
217
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
218
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
219
|
-
for (const degreeId of ['mba', 'phd', 'masters']) {
|
|
220
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}|${FilterKey.DEGREE_TYPE}:${degreeId}`;
|
|
221
|
-
resultMap.set(key, attendanceId === 'online' && degreeId === 'mba');
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
226
|
-
// Call the method via reflection since it's protected
|
|
227
|
-
const urls = await countryAttendanceDegreePolicy.generateUrls();
|
|
228
|
-
// Verify only online-MBA combinations were included
|
|
229
|
-
expect(urls).toHaveLength(4);
|
|
230
|
-
expect(urls).toContain('mba/online-programmes/uk');
|
|
231
|
-
expect(urls).toContain('mba/online-programmes/portugal');
|
|
232
|
-
expect(urls).toContain('mba/online-programmes/netherlands');
|
|
233
|
-
expect(urls).toContain('mba/online-programmes/usa');
|
|
234
|
-
expect(urls).not.toContain('mba/on-campus-programmes/uk');
|
|
235
|
-
expect(urls).not.toContain('phd/online-programmes/uk');
|
|
236
|
-
});
|
|
237
|
-
it('Should exclude certain country-attendance-degree combinations', async () => {
|
|
238
|
-
// Mock to exclude UK combinations
|
|
239
|
-
const resultMap = new Map();
|
|
240
|
-
// Set up rules to exclude UK for all attendance modes and degrees
|
|
241
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
242
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
243
|
-
for (const degreeId of ['mba', 'phd', 'masters']) {
|
|
244
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}|${FilterKey.DEGREE_TYPE}:${degreeId}`;
|
|
245
|
-
// Exclude UK (30) and only allow online+MBA for others
|
|
246
|
-
resultMap.set(key, countryId !== '30' && attendanceId === 'online' && degreeId === 'mba');
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
251
|
-
const urls = await countryAttendanceDegreePolicy.generateUrls();
|
|
252
|
-
// Should include others but not UK
|
|
253
|
-
expect(urls).toHaveLength(3);
|
|
254
|
-
expect(urls).toContain('mba/online-programmes/portugal');
|
|
255
|
-
expect(urls).toContain('mba/online-programmes/usa');
|
|
256
|
-
expect(urls).toContain('mba/online-programmes/netherlands');
|
|
257
|
-
expect(urls).not.toContain('mba/online-programmes/uk');
|
|
258
|
-
});
|
|
259
|
-
it('Should exclude all URLs when all checks fail', async () => {
|
|
260
|
-
// Create a map that returns false for all combinations
|
|
261
|
-
const resultMap = new Map();
|
|
262
|
-
// Set all combinations to fail
|
|
263
|
-
for (const countryId of ['30', '21', '56', '82']) {
|
|
264
|
-
for (const attendanceId of ['online', 'face2face', 'blended']) {
|
|
265
|
-
for (const degreeId of ['mba', 'phd', 'masters']) {
|
|
266
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}|${FilterKey.DEGREE_TYPE}:${degreeId}`;
|
|
267
|
-
resultMap.set(key, false);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap, false);
|
|
272
|
-
const urls = await countryAttendanceDegreePolicy.generateUrls();
|
|
273
|
-
// Should include no URLs
|
|
274
|
-
expect(urls).toHaveLength(0);
|
|
275
|
-
});
|
|
276
|
-
it('Should handle empty fragments arrays', async () => {
|
|
277
|
-
// Mock the CountryPresenter to return empty fragments
|
|
278
|
-
CountryPresenter.getInstance.mockReturnValueOnce({
|
|
279
|
-
getFragments: vi.fn().mockReturnValue([])
|
|
280
|
-
});
|
|
281
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
282
|
-
const urls = await countryAttendanceDegreePolicy.generateUrls();
|
|
283
|
-
// Should return empty array
|
|
284
|
-
expect(urls).toHaveLength(0);
|
|
285
|
-
});
|
|
286
|
-
it('Should handle large number of combinations efficiently', async () => {
|
|
287
|
-
// Generate a smaller set of countries (10) and degree types (3) to avoid too many combinations
|
|
288
|
-
const largeCountrySet = Array.from({ length: 10 }, (_, index) => ({
|
|
289
|
-
id: `${1000 + index}`,
|
|
290
|
-
path: `country-${1000 + index}`
|
|
291
|
-
}));
|
|
292
|
-
const largeAttendanceSet = Array.from({ length: 3 }, (_, index) => ({
|
|
293
|
-
id: `attendance-${index}`,
|
|
294
|
-
path: `attendance-type-${index}`
|
|
295
|
-
}));
|
|
296
|
-
const largeDegreeSet = Array.from({ length: 3 }, (_, index) => ({
|
|
297
|
-
id: `degree-${index}`,
|
|
298
|
-
path: `degree-type-${index}`
|
|
299
|
-
}));
|
|
300
|
-
// Mock the presenters to return large sets
|
|
301
|
-
CountryPresenter.getInstance.mockReturnValueOnce({
|
|
302
|
-
getFragments: vi.fn().mockReturnValue(largeCountrySet)
|
|
303
|
-
});
|
|
304
|
-
AttendancePresenter.getInstance.mockReturnValueOnce({
|
|
305
|
-
getFragments: vi.fn().mockReturnValue(largeAttendanceSet)
|
|
306
|
-
});
|
|
307
|
-
DegreePresenter.getInstance.mockReturnValueOnce({
|
|
308
|
-
getFragments: vi.fn().mockReturnValue(largeDegreeSet)
|
|
309
|
-
});
|
|
310
|
-
// Mock to allow only specific combinations
|
|
311
|
-
// Only allow countries divisible by 2, attendance index 0, and degree index 0
|
|
312
|
-
const resultMap = new Map();
|
|
313
|
-
for (let c = 0; c < largeCountrySet.length; c++) {
|
|
314
|
-
for (let a = 0; a < largeAttendanceSet.length; a++) {
|
|
315
|
-
for (let d = 0; d < largeDegreeSet.length; d++) {
|
|
316
|
-
const countryId = largeCountrySet[c].id;
|
|
317
|
-
const attendanceId = largeAttendanceSet[a].id;
|
|
318
|
-
const degreeId = largeDegreeSet[d].id;
|
|
319
|
-
const key = `${FilterKey.COUNTRY}:${countryId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}|${FilterKey.DEGREE_TYPE}:${degreeId}`;
|
|
320
|
-
// Only include countries where index is divisible by 2, and specific attendance and degree
|
|
321
|
-
resultMap.set(key, c % 2 === 0 && a === 0 && d === 0);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
326
|
-
const urls = await countryAttendanceDegreePolicy.generateUrls();
|
|
327
|
-
// Should generate 5 countries (10/2) * 1 attendance type * 1 degree type * page-2 variations = 10 URLs
|
|
328
|
-
expect(urls).toHaveLength(5);
|
|
329
|
-
// Test some specific combinations
|
|
330
|
-
expect(urls).toContain('degree-type-0/attendance-type-0/country-1000'); // First valid country
|
|
331
|
-
expect(urls).toContain('degree-type-0/attendance-type-0/country-1002'); // Another valid country
|
|
332
|
-
expect(urls).not.toContain('degree-type-0/attendance-type-0/country-1001'); // Invalid country (not divisible by 2)
|
|
333
|
-
expect(urls).not.toContain('degree-type-0/attendance-type-1/country-1000'); // Invalid attendance
|
|
334
|
-
expect(urls).not.toContain('degree-type-1/attendance-type-0/country-1000'); // Invalid degree
|
|
335
|
-
});
|
|
336
|
-
});
|
|
337
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|