@studyportals/fawkes 8.7.0 → 8.7.1-0
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 +8 -4
- 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/{DisciplineTuitionFee.d.ts → DegreeTuitionFeeArea.d.ts} +5 -5
- package/dist/src/programmes/policies/{DegreeAreaTuitionFee.js → DegreeTuitionFeeArea.js} +7 -7
- package/dist/src/programmes/policies/{DegreeAttendanceTuitionFee.d.ts → DegreeTuitionFeeAttendance.d.ts} +2 -2
- package/dist/src/programmes/policies/{DegreeAttendanceTuitionFee.js → DegreeTuitionFeeAttendance.js} +7 -7
- package/dist/src/programmes/policies/{DegreeContinentTuitionFee.d.ts → DegreeTuitionFeeContinent.d.ts} +2 -2
- package/dist/src/programmes/policies/{DegreeContinentTuitionFee.js → DegreeTuitionFeeContinent.js} +6 -6
- package/dist/src/programmes/policies/{DegreeFormatTuitionFee.d.ts → DegreeTuitionFeeFormat.d.ts} +3 -3
- package/dist/src/programmes/policies/{DegreeFormatTuitionFee.js → DegreeTuitionFeeFormat.js} +9 -9
- 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/policies/index.d.ts +4 -5
- package/dist/src/programmes/policies/index.js +4 -5
- 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 +15 -15
- 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/dist/tests/common/rules/NoFiltersSelectedRule.test.d.mts +1 -0
- package/dist/tests/common/rules/NoFiltersSelectedRule.test.mjs +40 -0
- package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.d.mts +1 -0
- package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.mjs +70 -0
- package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.d.mts +1 -0
- package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.mjs +54 -0
- package/dist/tests/organisations/policies/our-picks/Area.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/Area.test.mjs +125 -0
- package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.mjs +238 -0
- package/dist/tests/organisations/policies/our-picks/Attendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/Attendance.test.mjs +119 -0
- package/dist/tests/organisations/policies/our-picks/Continent.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/Continent.test.mjs +105 -0
- package/dist/tests/organisations/policies/our-picks/Country.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/Country.test.mjs +109 -0
- package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.mjs +152 -0
- package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.mjs +223 -0
- package/dist/tests/organisations/policies/our-picks/CountryCity.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/CountryCity.test.mjs +109 -0
- package/dist/tests/organisations/policies/our-picks/Unfiltered.test.d.mts +1 -0
- package/dist/tests/organisations/policies/our-picks/Unfiltered.test.mjs +60 -0
- package/dist/tests/organisations/policies/ranked/RankedArea.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedArea.test.mjs +149 -0
- package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.mjs +237 -0
- package/dist/tests/organisations/policies/ranked/RankedAttendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedAttendance.test.mjs +139 -0
- package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.mjs +224 -0
- package/dist/tests/organisations/policies/ranked/RankedContinent.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedContinent.test.mjs +125 -0
- package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.mjs +253 -0
- package/dist/tests/organisations/policies/ranked/RankedCountry.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedCountry.test.mjs +131 -0
- package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.mjs +230 -0
- package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.mjs +197 -0
- package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.mjs +124 -0
- package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.d.mts +1 -0
- package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.mjs +75 -0
- package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.mjs +59 -0
- package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.mjs +77 -0
- package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.mjs +77 -0
- package/dist/tests/organisations/rules/OnlineAttendanceRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/OnlineAttendanceRule.test.mjs +59 -0
- package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.mjs +59 -0
- package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.mjs +59 -0
- package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.d.mts +1 -0
- package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.mjs +59 -0
- package/dist/tests/organisations/utils/SearchDependencies.util.d.mts +20 -0
- package/dist/tests/organisations/utils/SearchDependencies.util.mjs +88 -0
- package/dist/tests/organisations/utils/SitemapDependencies.util.d.mts +18 -0
- package/dist/tests/organisations/utils/SitemapDependencies.util.mjs +54 -0
- package/dist/tests/presenters/AreaPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/AreaPresenter.test.mjs +46 -0
- package/dist/tests/presenters/AttendancePresenter.test.d.mts +1 -0
- package/dist/tests/presenters/AttendancePresenter.test.mjs +41 -0
- package/dist/tests/presenters/ContinentPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/ContinentPresenter.test.mjs +44 -0
- package/dist/tests/presenters/CountryPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/CountryPresenter.test.mjs +50 -0
- package/dist/tests/presenters/DegreePresenter.test.d.mts +1 -0
- package/dist/tests/presenters/DegreePresenter.test.mjs +51 -0
- package/dist/tests/presenters/DisciplinePresenter.test.d.mts +1 -0
- package/dist/tests/presenters/DisciplinePresenter.test.mjs +40 -0
- package/dist/tests/presenters/DurationPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/DurationPresenter.test.mjs +64 -0
- package/dist/tests/presenters/EducationalFormPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/EducationalFormPresenter.test.mjs +60 -0
- package/dist/tests/presenters/FormatPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/FormatPresenter.test.mjs +43 -0
- package/dist/tests/presenters/SpecialProgrammesPresenter.test.d.mts +1 -0
- package/dist/tests/presenters/SpecialProgrammesPresenter.test.mjs +66 -0
- package/dist/tests/presenters/TuitionFeePresenter.test.d.mts +1 -0
- package/dist/tests/presenters/TuitionFeePresenter.test.mjs +52 -0
- package/dist/tests/programmes/policies/Area.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Area.test.mjs +153 -0
- package/dist/tests/programmes/policies/Attendance.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Attendance.test.mjs +173 -0
- package/dist/tests/programmes/policies/AttendanceDegree.test.d.mts +1 -0
- package/dist/tests/programmes/policies/AttendanceDegree.test.mjs +291 -0
- package/dist/tests/programmes/policies/Continent.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Continent.test.mjs +169 -0
- package/dist/tests/programmes/policies/Country.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Country.test.mjs +164 -0
- package/dist/tests/programmes/policies/CountryAttendance.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryAttendance.test.mjs +251 -0
- package/dist/tests/programmes/policies/CountryAttendanceDegree.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryAttendanceDegree.test.mjs +337 -0
- package/dist/tests/programmes/policies/CountryDegree.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryDegree.test.mjs +262 -0
- package/dist/tests/programmes/policies/CountryDuration.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryDuration.test.mjs +234 -0
- package/dist/tests/programmes/policies/CountryDurationDegree.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryDurationDegree.test.mjs +304 -0
- package/dist/tests/programmes/policies/CountryEducationalForm.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryEducationalForm.test.mjs +260 -0
- package/dist/tests/programmes/policies/CountryFormat.test.d.mts +1 -0
- package/dist/tests/programmes/policies/CountryFormat.test.mjs +253 -0
- package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.mjs +179 -0
- package/dist/tests/programmes/policies/DegreeCountryAttendance.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DegreeCountryAttendance.test.mjs +267 -0
- package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.mjs +217 -0
- package/dist/tests/programmes/policies/DegreeFormat.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DegreeFormat.test.mjs +221 -0
- package/dist/tests/programmes/policies/Discipline.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Discipline.test.mjs +159 -0
- package/dist/tests/programmes/policies/DisciplineAttendance.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineAttendance.test.mjs +292 -0
- package/dist/tests/programmes/policies/DisciplineContinent.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineContinent.test.mjs +253 -0
- package/dist/tests/programmes/policies/DisciplineCountry.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineCountry.test.mjs +244 -0
- package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.mjs +345 -0
- package/dist/tests/programmes/policies/DisciplineDegree.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineDegree.test.mjs +273 -0
- package/dist/tests/programmes/policies/DisciplineDuration.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineDuration.test.mjs +278 -0
- package/dist/tests/programmes/policies/DisciplineEducationalForm.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineEducationalForm.test.mjs +302 -0
- package/dist/tests/programmes/policies/DisciplineFormat.test.d.mts +1 -0
- package/dist/tests/programmes/policies/DisciplineFormat.test.mjs +266 -0
- package/dist/tests/programmes/policies/Duration.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Duration.test.mjs +179 -0
- package/dist/tests/programmes/policies/Format.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Format.test.mjs +117 -0
- package/dist/tests/programmes/policies/NewRulesValidation.test.d.mts +1 -0
- package/dist/tests/programmes/policies/NewRulesValidation.test.mjs +320 -0
- package/dist/tests/programmes/policies/SpecialProgrammes.test.d.mts +1 -0
- package/dist/tests/programmes/policies/SpecialProgrammes.test.mjs +171 -0
- package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.d.mts +1 -0
- package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.mjs +360 -0
- package/dist/tests/programmes/policies/TuitionFeeContinent.test.d.mts +1 -0
- package/dist/tests/programmes/policies/TuitionFeeContinent.test.mjs +293 -0
- package/dist/tests/programmes/policies/TuitionFeeCountry.test.d.mts +1 -0
- package/dist/tests/programmes/policies/TuitionFeeCountry.test.mjs +266 -0
- package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.d.mts +1 -0
- package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.mjs +267 -0
- package/dist/tests/programmes/policies/Unfiltered.test.d.mts +1 -0
- package/dist/tests/programmes/policies/Unfiltered.test.mjs +90 -0
- package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.mjs +27 -0
- package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.mjs +121 -0
- package/dist/tests/programmes/rules/DegreeDisciplineRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/DegreeDisciplineRule.test.mjs +169 -0
- package/dist/tests/programmes/rules/IndexableDegreeRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/IndexableDegreeRule.test.mjs +101 -0
- package/dist/tests/programmes/rules/IndexableDurationRule.test..d.mts +1 -0
- package/dist/tests/programmes/rules/IndexableDurationRule.test..mjs +25 -0
- package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.mjs +27 -0
- package/dist/tests/programmes/rules/IndexablePageNumberRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/IndexablePageNumberRule.test.mjs +51 -0
- package/dist/tests/programmes/rules/MbaDegreeRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/MbaDegreeRule.test.mjs +55 -0
- package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.mjs +53 -0
- package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.mjs +79 -0
- package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.mjs +57 -0
- package/dist/tests/programmes/rules/OneYearDurationRule.test..d.mts +1 -0
- package/dist/tests/programmes/rules/OneYearDurationRule.test..mjs +40 -0
- package/dist/tests/programmes/rules/OnlineAttendanceRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/OnlineAttendanceRule.test.mjs +69 -0
- package/dist/tests/programmes/rules/PartTimeFormatRule.test.d.mts +1 -0
- package/dist/tests/programmes/rules/PartTimeFormatRule.test.mjs +27 -0
- package/dist/tests/programmes/utils/SearchDependencies.util.d.mts +16 -0
- package/dist/tests/programmes/utils/SearchDependencies.util.mjs +73 -0
- package/dist/tests/programmes/utils/SitemapDependencies.util.d.mts +15 -0
- package/dist/tests/programmes/utils/SitemapDependencies.util.mjs +49 -0
- package/dist/tests/scholarships/policies/Area.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/Area.test.mjs +121 -0
- package/dist/tests/scholarships/policies/Country.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/Country.test.mjs +97 -0
- package/dist/tests/scholarships/policies/Discipline.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/Discipline.test.mjs +93 -0
- package/dist/tests/scholarships/policies/DisciplineCountry.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/DisciplineCountry.test.mjs +151 -0
- package/dist/tests/scholarships/policies/Unfiltered.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/Unfiltered.test.mjs +44 -0
- package/dist/tests/scholarships/policies/UniversityCountry.test.d.mts +1 -0
- package/dist/tests/scholarships/policies/UniversityCountry.test.mjs +115 -0
- package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.d.mts +1 -0
- package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.mjs +64 -0
- package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.d.mts +1 -0
- package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.mjs +62 -0
- package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.d.mts +1 -0
- package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.mjs +114 -0
- package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.d.mts +1 -0
- package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.mjs +62 -0
- package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.d.mts +1 -0
- package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.mjs +62 -0
- package/dist/tests/scholarships/utils/SearchDependencies.util.d.mts +16 -0
- package/dist/tests/scholarships/utils/SearchDependencies.util.mjs +70 -0
- package/dist/tests/scholarships/utils/SitemapDependencies.util.d.mts +11 -0
- package/dist/tests/scholarships/utils/SitemapDependencies.util.mjs +33 -0
- package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.d.mts +1 -0
- package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.mjs +82 -0
- package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.d.mts +1 -0
- package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.mjs +85 -0
- package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.d.mts +1 -0
- package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.mjs +77 -0
- package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.d.mts +1 -0
- package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.mjs +60 -0
- package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.d.mts +1 -0
- package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.mjs +334 -0
- package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.d.mts +1 -0
- package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.mjs +562 -0
- package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.d.mts +1 -0
- package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.mjs +292 -0
- package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.d.mts +1 -0
- package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.mjs +258 -0
- package/package.json +1 -1
- package/dist/src/programmes/policies/AttendanceTuitionFee.d.ts +0 -17
- package/dist/src/programmes/policies/AttendanceTuitionFee.js +0 -51
- package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +0 -16
- package/dist/src/programmes/policies/ContinentTuitionFee.js +0 -46
- package/dist/src/programmes/policies/CountryTuitionFee.d.ts +0 -16
- package/dist/src/programmes/policies/CountryTuitionFee.js +0 -46
- package/dist/src/programmes/policies/DegreeAreaTuitionFee.d.ts +0 -16
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +0 -46
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +0 -17
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +0 -54
|
@@ -0,0 +1,292 @@
|
|
|
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 { DisciplineAttendance } from '@/programmes/policies/DisciplineAttendance';
|
|
6
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
7
|
+
import { DisciplinePresenter } from '@/presenters/DisciplinePresenter';
|
|
8
|
+
import { AttendancePresenter } from '@/presenters/AttendancePresenter';
|
|
9
|
+
// Mock the presenters at the module level
|
|
10
|
+
vi.mock('@/presenters/DisciplinePresenter', () => {
|
|
11
|
+
return {
|
|
12
|
+
DisciplinePresenter: {
|
|
13
|
+
getInstance: vi.fn().mockReturnValue({
|
|
14
|
+
getFragments: vi.fn().mockReturnValue([
|
|
15
|
+
{ id: '54', path: 'agriculture-forestry' },
|
|
16
|
+
{ id: '12', path: 'applied-sciences' },
|
|
17
|
+
{ id: '356', path: 'computer-science' }
|
|
18
|
+
])
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
vi.mock('@/presenters/AttendancePresenter', () => {
|
|
24
|
+
return {
|
|
25
|
+
AttendancePresenter: {
|
|
26
|
+
getInstance: vi.fn().mockReturnValue({
|
|
27
|
+
getFragments: vi.fn().mockReturnValue([
|
|
28
|
+
{ id: 'online', path: 'online' },
|
|
29
|
+
{ id: 'face2face', path: 'on-campus' }
|
|
30
|
+
])
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
describe('Policy:DisciplineAttendance', () => {
|
|
36
|
+
describe('shouldIndex', () => {
|
|
37
|
+
let searchDependenciesHelper;
|
|
38
|
+
let disciplineAttendancePolicy;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
41
|
+
disciplineAttendancePolicy = new DisciplineAttendance(searchDependenciesHelper.dependencies);
|
|
42
|
+
searchDependenciesHelper.setResultsCount(10);
|
|
43
|
+
searchDependenciesHelper.setPageNumber(1);
|
|
44
|
+
searchDependenciesHelper.setPortalType(PortalType.MASTER);
|
|
45
|
+
});
|
|
46
|
+
it('Should return true when all conditions are met', async () => {
|
|
47
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
48
|
+
const attendance = 'online';
|
|
49
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
50
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
51
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
52
|
+
]));
|
|
53
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
54
|
+
expect(result).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('Should return false when multiple disciplines are selected', async () => {
|
|
57
|
+
const firstDisciplineId = '54'; // Agriculture & Forestry
|
|
58
|
+
const secondDisciplineId = '12'; // Applied Sciences & Professions
|
|
59
|
+
const attendance = 'online';
|
|
60
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
61
|
+
[FilterKey.DISCIPLINES, [firstDisciplineId, secondDisciplineId]],
|
|
62
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
63
|
+
]));
|
|
64
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
65
|
+
expect(result).toBe(false);
|
|
66
|
+
});
|
|
67
|
+
it('Should return false when multiple attendance values are selected', async () => {
|
|
68
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
69
|
+
const firstAttendance = 'online';
|
|
70
|
+
const secondAttendance = 'face2face';
|
|
71
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
72
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
73
|
+
[FilterKey.DELIVERY_METHOD, [firstAttendance, secondAttendance]]
|
|
74
|
+
]));
|
|
75
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
76
|
+
expect(result).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
it('Should return false when no disciplines are selected', async () => {
|
|
79
|
+
const attendance = 'online';
|
|
80
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DELIVERY_METHOD, [attendance]]]));
|
|
81
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
82
|
+
expect(result).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
it('Should return false when no attendance value is selected', async () => {
|
|
85
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
86
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DISCIPLINES, [disciplineId]]]));
|
|
87
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
88
|
+
expect(result).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
it('Should return false when other filters are selected', async () => {
|
|
91
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
92
|
+
const attendance = 'online';
|
|
93
|
+
const countryId = '30'; // UK
|
|
94
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
95
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
96
|
+
[FilterKey.DELIVERY_METHOD, [attendance]],
|
|
97
|
+
[FilterKey.COUNTRY, [countryId]]
|
|
98
|
+
]));
|
|
99
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
100
|
+
expect(result).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
it('Should return false attendance is not online', async () => {
|
|
103
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
104
|
+
const attendance = 'face2face';
|
|
105
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
106
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
107
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
108
|
+
]));
|
|
109
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
110
|
+
expect(result).toBe(false);
|
|
111
|
+
});
|
|
112
|
+
it('Should return false when number of results is less than 7', async () => {
|
|
113
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
114
|
+
const attendance = 'online';
|
|
115
|
+
searchDependenciesHelper.setResultsCount(2);
|
|
116
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
117
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
118
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
119
|
+
]));
|
|
120
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
121
|
+
expect(result).toBe(false);
|
|
122
|
+
});
|
|
123
|
+
it('Should return false when page number is higher than 2', async () => {
|
|
124
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
125
|
+
const attendance = 'online';
|
|
126
|
+
searchDependenciesHelper.setPageNumber(4);
|
|
127
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
128
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
129
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
130
|
+
]));
|
|
131
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
132
|
+
expect(result).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
it('Should return false when portal is distance learning', async () => {
|
|
135
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
136
|
+
const attendance = 'online';
|
|
137
|
+
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
138
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
139
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
140
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
141
|
+
]));
|
|
142
|
+
const result = await disciplineAttendancePolicy.shouldIndex();
|
|
143
|
+
expect(result).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe('generateUrls', () => {
|
|
147
|
+
let sitemapDependenciesHelper;
|
|
148
|
+
let disciplineAttendancePolicy;
|
|
149
|
+
beforeEach(() => {
|
|
150
|
+
sitemapDependenciesHelper = new SitemapDependencies();
|
|
151
|
+
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
152
|
+
disciplineAttendancePolicy = new DisciplineAttendance(sitemapDependenciesHelper.dependencies);
|
|
153
|
+
DisciplinePresenter.getInstance = vi.fn().mockReturnValue({
|
|
154
|
+
getFragments: vi.fn().mockReturnValue([
|
|
155
|
+
{ id: '54', path: 'agriculture-forestry' },
|
|
156
|
+
{ id: '12', path: 'applied-sciences' },
|
|
157
|
+
{ id: '356', path: 'computer-science' }
|
|
158
|
+
])
|
|
159
|
+
});
|
|
160
|
+
AttendancePresenter.getInstance = vi.fn().mockReturnValue({
|
|
161
|
+
getFragments: vi.fn().mockReturnValue([
|
|
162
|
+
{ id: 'online', path: 'online' },
|
|
163
|
+
{ id: 'face2face', path: 'on-campus' }
|
|
164
|
+
])
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
afterEach(() => {
|
|
168
|
+
sitemapDependenciesHelper.resetMocks();
|
|
169
|
+
});
|
|
170
|
+
it('Should generate URLs for valid discipline-attendance combinations with online attendance', async () => {
|
|
171
|
+
// Mock the checkRulesForSitemap to filter out non-online attendance options
|
|
172
|
+
const resultMap = new Map();
|
|
173
|
+
// Set up all combinations
|
|
174
|
+
for (const discipline of ['54', '12', '356']) {
|
|
175
|
+
for (const attendance of ['online', 'face2face']) {
|
|
176
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
|
|
177
|
+
// Only allow online attendance to pass (due to OnlineAttendanceRule)
|
|
178
|
+
resultMap.set(key, attendance === 'online');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
182
|
+
// Call the method via reflection since it's protected
|
|
183
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
184
|
+
// Calculate expected URLs: 3 disciplines * 1 attendance (online) * 2 pages = 6 URLs
|
|
185
|
+
expect(urls).toHaveLength(3);
|
|
186
|
+
// Verify valid combinations with proper path format
|
|
187
|
+
expect(urls).toContain('online/agriculture-forestry');
|
|
188
|
+
expect(urls).toContain('online/applied-sciences');
|
|
189
|
+
expect(urls).toContain('online/computer-science');
|
|
190
|
+
// Verify on-campus combinations are excluded
|
|
191
|
+
expect(urls).not.toContain('on-campus/agriculture-forestry');
|
|
192
|
+
expect(urls).not.toContain('on-campus/applied-sciences');
|
|
193
|
+
expect(urls).not.toContain('on-campus/computer-science');
|
|
194
|
+
});
|
|
195
|
+
it('Should exclude specific discipline combinations based on rules', async () => {
|
|
196
|
+
// Create a map that returns false for computer science
|
|
197
|
+
const resultMap = new Map();
|
|
198
|
+
// Set up all possible combinations
|
|
199
|
+
for (const discipline of ['54', '12', '356']) {
|
|
200
|
+
for (const attendance of ['online', 'face2face']) {
|
|
201
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
|
|
202
|
+
// Only allow agriculture and applied sciences with online attendance
|
|
203
|
+
resultMap.set(key, discipline !== '356' && attendance === 'online');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
207
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
208
|
+
// Calculate expected URLs: 2 disciplines * 1 attendance (online) * 2 pages = 4 URLs
|
|
209
|
+
expect(urls).toHaveLength(2);
|
|
210
|
+
// Verify included disciplines
|
|
211
|
+
expect(urls).toContain('online/agriculture-forestry');
|
|
212
|
+
expect(urls).toContain('online/applied-sciences');
|
|
213
|
+
// Verify excluded disciplines
|
|
214
|
+
expect(urls).not.toContain('online/computer-science');
|
|
215
|
+
expect(urls).not.toContain('on-campus/agriculture-forestry');
|
|
216
|
+
expect(urls).not.toContain('on-campus/applied-sciences');
|
|
217
|
+
expect(urls).not.toContain('on-campus/computer-science');
|
|
218
|
+
});
|
|
219
|
+
it('Should exclude all URLs when all rule checks fail', async () => {
|
|
220
|
+
// Create a map that returns false for all combinations
|
|
221
|
+
const resultMap = new Map();
|
|
222
|
+
for (const discipline of ['54', '12', '356']) {
|
|
223
|
+
for (const attendance of ['online', 'face2face']) {
|
|
224
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
|
|
225
|
+
resultMap.set(key, false);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
229
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
230
|
+
// Should include no URLs
|
|
231
|
+
expect(urls).toHaveLength(0);
|
|
232
|
+
});
|
|
233
|
+
it('Should handle empty discipline fragments', async () => {
|
|
234
|
+
// Mock the DisciplinePresenter to return empty fragments
|
|
235
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
236
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
237
|
+
});
|
|
238
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
239
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
240
|
+
// Should return empty array
|
|
241
|
+
expect(urls).toHaveLength(0);
|
|
242
|
+
});
|
|
243
|
+
it('Should handle empty attendance fragments', async () => {
|
|
244
|
+
// Mock the AttendancePresenter to return empty fragments
|
|
245
|
+
AttendancePresenter.getInstance.mockReturnValueOnce({
|
|
246
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
247
|
+
});
|
|
248
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
249
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
250
|
+
// Should return empty array
|
|
251
|
+
expect(urls).toHaveLength(0);
|
|
252
|
+
});
|
|
253
|
+
it('Should handle performance with large number of discipline combinations', async () => {
|
|
254
|
+
// Generate larger dataset for testing
|
|
255
|
+
const largeDisciplineSet = Array.from({ length: 30 }, (_, index) => ({
|
|
256
|
+
id: `discipline-${index}`,
|
|
257
|
+
path: `discipline-path-${index}`
|
|
258
|
+
}));
|
|
259
|
+
const largeAttendanceSet = Array.from({ length: 2 }, (_, index) => ({
|
|
260
|
+
id: index === 0 ? 'online' : 'face2face',
|
|
261
|
+
path: index === 0 ? 'online' : 'on-campus'
|
|
262
|
+
}));
|
|
263
|
+
// Override mocks with large datasets
|
|
264
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
265
|
+
getFragments: vi.fn().mockReturnValue(largeDisciplineSet)
|
|
266
|
+
});
|
|
267
|
+
AttendancePresenter.getInstance.mockReturnValueOnce({
|
|
268
|
+
getFragments: vi.fn().mockReturnValue(largeAttendanceSet)
|
|
269
|
+
});
|
|
270
|
+
// Mock to allow only combinations where discipline index is even and attendance is online
|
|
271
|
+
const resultMap = new Map();
|
|
272
|
+
for (let d = 0; d < largeDisciplineSet.length; d++) {
|
|
273
|
+
for (let a = 0; a < largeAttendanceSet.length; a++) {
|
|
274
|
+
const disciplineId = largeDisciplineSet[d].id;
|
|
275
|
+
const attendanceId = largeAttendanceSet[a].id;
|
|
276
|
+
const key = `${FilterKey.DISCIPLINES}:${disciplineId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
|
|
277
|
+
resultMap.set(key, d % 2 === 0 && attendanceId === 'online');
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
281
|
+
const urls = await disciplineAttendancePolicy.generateUrls();
|
|
282
|
+
// Calculate expected count: 15 disciplines (even indices) * 1 attendance (online) * 2 pages
|
|
283
|
+
// = 15 * 1 * 2 = 30 URLs
|
|
284
|
+
expect(urls).toHaveLength(15);
|
|
285
|
+
// Test specific items
|
|
286
|
+
expect(urls).toContain('online/discipline-path-0');
|
|
287
|
+
expect(urls).toContain('online/discipline-path-2');
|
|
288
|
+
expect(urls).not.toContain('online/discipline-path-1'); // Odd discipline index
|
|
289
|
+
expect(urls).not.toContain('on-campus/discipline-path-0'); // Face-to-face attendance
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,253 @@
|
|
|
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 { DisciplineContinent } from '@/programmes/policies/DisciplineContinent';
|
|
6
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
7
|
+
import { DisciplinePresenter } from '@/presenters/DisciplinePresenter';
|
|
8
|
+
import { ContinentPresenter } from '@/presenters/ContinentPresenter';
|
|
9
|
+
describe('Policy:DisciplineContinent', () => {
|
|
10
|
+
describe('shouldIndex', () => {
|
|
11
|
+
let searchDependenciesHelper;
|
|
12
|
+
let disciplineContinentPolicy;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
15
|
+
disciplineContinentPolicy = new DisciplineContinent(searchDependenciesHelper.dependencies);
|
|
16
|
+
searchDependenciesHelper.setResultsCount(10);
|
|
17
|
+
searchDependenciesHelper.setPageNumber(1);
|
|
18
|
+
searchDependenciesHelper.setPortalType(PortalType.BACHELOR);
|
|
19
|
+
});
|
|
20
|
+
it('Should return true when all conditions are met', async () => {
|
|
21
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
22
|
+
const continentId = '1'; // Europe
|
|
23
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
24
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
25
|
+
[FilterKey.CONTINENT, [continentId]]
|
|
26
|
+
]));
|
|
27
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
28
|
+
expect(result).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
it('Should return false when multiple disciplines are selected', async () => {
|
|
31
|
+
const firstDisciplineId = '54'; // Agriculture & Forestry
|
|
32
|
+
const secondDisciplineId = '12'; // Applied Sciences & Professions
|
|
33
|
+
const continentId = '9'; // Asia
|
|
34
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
35
|
+
[FilterKey.DISCIPLINES, [firstDisciplineId, secondDisciplineId]],
|
|
36
|
+
[FilterKey.CONTINENT, [continentId]]
|
|
37
|
+
]));
|
|
38
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
39
|
+
expect(result).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it('Should return false when multiple continents are selected', async () => {
|
|
42
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
43
|
+
const firstContinentId = '1'; // Europe
|
|
44
|
+
const secondContinentId = '9'; // Asia
|
|
45
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
46
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
47
|
+
[FilterKey.CONTINENT, [firstContinentId, secondContinentId]]
|
|
48
|
+
]));
|
|
49
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
50
|
+
expect(result).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
it('Should return false when no disciplines are selected', async () => {
|
|
53
|
+
const continentId = '1'; // Europe
|
|
54
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.CONTINENT, [continentId]]]));
|
|
55
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
56
|
+
expect(result).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
it('Should return false when no continents are selected', async () => {
|
|
59
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
60
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DISCIPLINES, [disciplineId]]]));
|
|
61
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
62
|
+
expect(result).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it('Should return false when other filters are selected', async () => {
|
|
65
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
66
|
+
const continentId = '10'; // Africa
|
|
67
|
+
const attendance = 'online';
|
|
68
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
69
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
70
|
+
[FilterKey.CONTINENT, [continentId]],
|
|
71
|
+
[FilterKey.DELIVERY_METHOD, [attendance]]
|
|
72
|
+
]));
|
|
73
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
74
|
+
expect(result).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
it('Should return false when number of results is less than 7', async () => {
|
|
77
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
78
|
+
const continentId = '1'; // Europe
|
|
79
|
+
searchDependenciesHelper.setResultsCount(4);
|
|
80
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
81
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
82
|
+
[FilterKey.CONTINENT, [continentId]]
|
|
83
|
+
]));
|
|
84
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
85
|
+
expect(result).toBe(false);
|
|
86
|
+
});
|
|
87
|
+
it('Should return false when page number is higher than 2', async () => {
|
|
88
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
89
|
+
const continentId = '1'; // Europe
|
|
90
|
+
searchDependenciesHelper.setPageNumber(3);
|
|
91
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
92
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
93
|
+
[FilterKey.CONTINENT, [continentId]]
|
|
94
|
+
]));
|
|
95
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
96
|
+
expect(result).toBe(false);
|
|
97
|
+
});
|
|
98
|
+
it('Should return false when portal distance learning', async () => {
|
|
99
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
100
|
+
const continentId = '1'; // Europe
|
|
101
|
+
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
102
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
103
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
104
|
+
[FilterKey.CONTINENT, [continentId]]
|
|
105
|
+
]));
|
|
106
|
+
const result = await disciplineContinentPolicy.shouldIndex();
|
|
107
|
+
expect(result).toBe(false);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('generateUrls', () => {
|
|
111
|
+
let sitemapDependenciesHelper;
|
|
112
|
+
let disciplineContinentPolicy;
|
|
113
|
+
beforeEach(() => {
|
|
114
|
+
sitemapDependenciesHelper = new SitemapDependencies();
|
|
115
|
+
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
116
|
+
disciplineContinentPolicy = new DisciplineContinent(sitemapDependenciesHelper.dependencies);
|
|
117
|
+
DisciplinePresenter.getInstance = vi.fn().mockReturnValue({
|
|
118
|
+
getFragments: vi.fn().mockReturnValue([
|
|
119
|
+
{ id: '54', path: 'agriculture-forestry' },
|
|
120
|
+
{ id: '12', path: 'applied-sciences' },
|
|
121
|
+
{ id: '152', path: 'computer-science-it' }
|
|
122
|
+
])
|
|
123
|
+
});
|
|
124
|
+
ContinentPresenter.getInstance = vi.fn().mockReturnValue({
|
|
125
|
+
getFragments: vi.fn().mockReturnValue([
|
|
126
|
+
{ id: '1', path: 'europe' },
|
|
127
|
+
{ id: '9', path: 'asia' },
|
|
128
|
+
{ id: '10', path: 'africa' },
|
|
129
|
+
{ id: '4', path: 'north-america' }
|
|
130
|
+
])
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
afterEach(() => {
|
|
134
|
+
sitemapDependenciesHelper.resetMocks();
|
|
135
|
+
});
|
|
136
|
+
it('Should generate URLs for valid discipline-continent combinations', async () => {
|
|
137
|
+
// Mock the checkRulesForSitemap to control which combinations pass
|
|
138
|
+
const resultMap = new Map();
|
|
139
|
+
// Set up all possible combinations
|
|
140
|
+
for (const discipline of ['54', '12', '152']) {
|
|
141
|
+
for (const continent of ['1', '9', '10', '4']) {
|
|
142
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
|
|
143
|
+
// Allow all valid combinations
|
|
144
|
+
resultMap.set(key, true);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
148
|
+
// Call the method via reflection since it's protected
|
|
149
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
150
|
+
// Calculate expected URLs: 3 disciplines * 4 continents * 2 pages = 24 URLs
|
|
151
|
+
expect(urls).toHaveLength(12);
|
|
152
|
+
// Verify some valid combinations
|
|
153
|
+
expect(urls).toContain('agriculture-forestry/europe');
|
|
154
|
+
expect(urls).toContain('agriculture-forestry/asia');
|
|
155
|
+
expect(urls).toContain('applied-sciences/africa');
|
|
156
|
+
expect(urls).toContain('computer-science-it/north-america');
|
|
157
|
+
});
|
|
158
|
+
it('Should exclude specific discipline-continent combinations based on rules', async () => {
|
|
159
|
+
// Create a map that returns false for specific combinations
|
|
160
|
+
const resultMap = new Map();
|
|
161
|
+
// Only allow Europe continent, exclude Computer Science discipline
|
|
162
|
+
for (const discipline of ['54', '12', '152']) {
|
|
163
|
+
for (const continent of ['1', '9', '10', '4']) {
|
|
164
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
|
|
165
|
+
// Only Europe continent and not Computer Science discipline should pass
|
|
166
|
+
resultMap.set(key, continent === '1' && discipline !== '152');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
170
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
171
|
+
// Calculate expected URLs: 2 disciplines (excluding computer science) * 1 continent (Europe) * 2 pages = 4 URLs
|
|
172
|
+
expect(urls).toHaveLength(2);
|
|
173
|
+
// Verify included combinations
|
|
174
|
+
expect(urls).toContain('agriculture-forestry/europe');
|
|
175
|
+
expect(urls).toContain('applied-sciences/europe');
|
|
176
|
+
// Verify excluded combinations
|
|
177
|
+
expect(urls).not.toContain('computer-science/europe');
|
|
178
|
+
expect(urls).not.toContain('agriculture-forestry/asia');
|
|
179
|
+
});
|
|
180
|
+
it('Should exclude all URLs when all rule checks fail', async () => {
|
|
181
|
+
// Create a map that returns false for all combinations
|
|
182
|
+
const resultMap = new Map();
|
|
183
|
+
for (const discipline of ['54', '12', '152']) {
|
|
184
|
+
for (const continent of ['1', '9', '10', '4']) {
|
|
185
|
+
const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
|
|
186
|
+
resultMap.set(key, false);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap, false);
|
|
190
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
191
|
+
// Should include no URLs
|
|
192
|
+
expect(urls).toHaveLength(0);
|
|
193
|
+
});
|
|
194
|
+
it('Should handle empty discipline fragments', async () => {
|
|
195
|
+
// Mock the DisciplinePresenter to return empty fragments
|
|
196
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
197
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
198
|
+
});
|
|
199
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
200
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
201
|
+
// Should return empty array
|
|
202
|
+
expect(urls).toHaveLength(0);
|
|
203
|
+
});
|
|
204
|
+
it('Should handle empty continent fragments', async () => {
|
|
205
|
+
// Mock the ContinentPresenter to return empty fragments
|
|
206
|
+
ContinentPresenter.getInstance.mockReturnValueOnce({
|
|
207
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
208
|
+
});
|
|
209
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
210
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
211
|
+
// Should return empty array
|
|
212
|
+
expect(urls).toHaveLength(0);
|
|
213
|
+
});
|
|
214
|
+
it('Should handle performance with large number of combinations', async () => {
|
|
215
|
+
// Generate larger datasets for testing
|
|
216
|
+
const largeDisciplineSet = Array.from({ length: 20 }, (_, index) => ({
|
|
217
|
+
id: `discipline-${index}`,
|
|
218
|
+
path: `discipline-path-${index}`
|
|
219
|
+
}));
|
|
220
|
+
const largeContinentSet = Array.from({ length: 7 }, (_, index) => ({
|
|
221
|
+
id: `continent-${index}`,
|
|
222
|
+
path: `continent-path-${index}`
|
|
223
|
+
}));
|
|
224
|
+
// Override mocks with large datasets
|
|
225
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
226
|
+
getFragments: vi.fn().mockReturnValue(largeDisciplineSet)
|
|
227
|
+
});
|
|
228
|
+
ContinentPresenter.getInstance.mockReturnValueOnce({
|
|
229
|
+
getFragments: vi.fn().mockReturnValue(largeContinentSet)
|
|
230
|
+
});
|
|
231
|
+
// Mock to only allow combinations where discipline index is even and continent index is less than 5
|
|
232
|
+
const resultMap = new Map();
|
|
233
|
+
for (let d = 0; d < largeDisciplineSet.length; d++) {
|
|
234
|
+
for (let c = 0; c < largeContinentSet.length; c++) {
|
|
235
|
+
const disciplineId = largeDisciplineSet[d].id;
|
|
236
|
+
const continentId = largeContinentSet[c].id;
|
|
237
|
+
const key = `${FilterKey.DISCIPLINES}:${disciplineId}|${FilterKey.CONTINENT}:${continentId}`;
|
|
238
|
+
resultMap.set(key, d % 2 === 0 && c < 5);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
242
|
+
const urls = await disciplineContinentPolicy.generateUrls();
|
|
243
|
+
// Calculate expected count: 10 disciplines (even indices) * 5 continents (indices 0-4) * 2 pages
|
|
244
|
+
// = 10 * 5 * 2 = 100 URLs
|
|
245
|
+
expect(urls).toHaveLength(50);
|
|
246
|
+
// Test specific items
|
|
247
|
+
expect(urls).toContain('discipline-path-0/continent-path-0');
|
|
248
|
+
expect(urls).toContain('discipline-path-2/continent-path-3');
|
|
249
|
+
expect(urls).not.toContain('discipline-path-1/continent-path-0'); // Odd discipline
|
|
250
|
+
expect(urls).not.toContain('discipline-path-0/continent-path-5'); // Continent index >= 5
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|