@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,267 @@
|
|
|
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 { TuitionFeeDiscipline } from '@/programmes/policies/TuitionFeeDiscipline';
|
|
6
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
7
|
+
import { DisciplinePresenter } from '@/presenters/DisciplinePresenter';
|
|
8
|
+
import { TuitionFeePresenter } from '@/presenters/TuitionFeePresenter';
|
|
9
|
+
describe('Policy:TuitionFeeDiscipline', () => {
|
|
10
|
+
describe('shouldIndex', () => {
|
|
11
|
+
let searchDependenciesHelper;
|
|
12
|
+
let tuitionFeeDisciplinePolicy;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
15
|
+
tuitionFeeDisciplinePolicy = new TuitionFeeDiscipline(searchDependenciesHelper.dependencies);
|
|
16
|
+
searchDependenciesHelper.setResultsCount(7);
|
|
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 tuitionFee = '[0,2500]'; // Affordable
|
|
23
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
24
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
25
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
26
|
+
]));
|
|
27
|
+
const result = await tuitionFeeDisciplinePolicy.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 tuitionFee = '[0,2500]'; // Affordable
|
|
34
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
35
|
+
[FilterKey.DISCIPLINES, [firstDisciplineId, secondDisciplineId]],
|
|
36
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
37
|
+
]));
|
|
38
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
39
|
+
expect(result).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it('Should return false when multiple tuition fee values are selected', async () => {
|
|
42
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
43
|
+
const firstTuitionFee = '[0,2500]'; // Affordable
|
|
44
|
+
const secondTuitionFee = '[0,3000]';
|
|
45
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
46
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
47
|
+
[FilterKey.TUITION_FEE, [firstTuitionFee, secondTuitionFee]]
|
|
48
|
+
]));
|
|
49
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
50
|
+
expect(result).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
it('Should return false when no disciplines are selected', async () => {
|
|
53
|
+
const tuitionFee = '[0,2500]'; // Affordable
|
|
54
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.TUITION_FEE, [tuitionFee]]]));
|
|
55
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
56
|
+
expect(result).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
it('Should return false when no tuition fee value is selected', async () => {
|
|
59
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
60
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DISCIPLINES, [disciplineId]]]));
|
|
61
|
+
const result = await tuitionFeeDisciplinePolicy.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 tuitionFee = '[0,2500]'; // Affordable
|
|
67
|
+
const countryId = '30'; // UK
|
|
68
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
69
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
70
|
+
[FilterKey.TUITION_FEE, [tuitionFee]],
|
|
71
|
+
[FilterKey.COUNTRY, [countryId]]
|
|
72
|
+
]));
|
|
73
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
74
|
+
expect(result).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
it('Should return false when tuition fee is not [0,2500] (affordable)', async () => {
|
|
77
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
78
|
+
const tuitionFee = '[0,3000]';
|
|
79
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
80
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
81
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
82
|
+
]));
|
|
83
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
84
|
+
expect(result).toBe(false);
|
|
85
|
+
});
|
|
86
|
+
it('Should return false when number of results is less than 7', async () => {
|
|
87
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
88
|
+
const tuitionFee = '[0,2500]'; // Affordable
|
|
89
|
+
searchDependenciesHelper.setResultsCount(5);
|
|
90
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
91
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
92
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
93
|
+
]));
|
|
94
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
95
|
+
expect(result).toBe(false);
|
|
96
|
+
});
|
|
97
|
+
it('Should return false when page number is higher than 2', async () => {
|
|
98
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
99
|
+
const tuitionFee = '[0,2500]'; // Affordable
|
|
100
|
+
searchDependenciesHelper.setPageNumber(3);
|
|
101
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
102
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
103
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
104
|
+
]));
|
|
105
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
106
|
+
expect(result).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
it('Should return false when portal type is distance learning', async () => {
|
|
109
|
+
const disciplineId = '54'; // Agriculture & Forestry
|
|
110
|
+
const tuitionFee = '[0,2500]'; // Affordable
|
|
111
|
+
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
112
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
113
|
+
[FilterKey.DISCIPLINES, [disciplineId]],
|
|
114
|
+
[FilterKey.TUITION_FEE, [tuitionFee]]
|
|
115
|
+
]));
|
|
116
|
+
const result = await tuitionFeeDisciplinePolicy.shouldIndex();
|
|
117
|
+
expect(result).toBe(false);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe('generateUrls', () => {
|
|
121
|
+
let sitemapDependenciesHelper;
|
|
122
|
+
let tuitionFeeDisciplinePolicy;
|
|
123
|
+
beforeEach(() => {
|
|
124
|
+
sitemapDependenciesHelper = new SitemapDependencies();
|
|
125
|
+
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
126
|
+
tuitionFeeDisciplinePolicy = new TuitionFeeDiscipline(sitemapDependenciesHelper.dependencies);
|
|
127
|
+
DisciplinePresenter.getInstance = vi.fn().mockReturnValue({
|
|
128
|
+
getFragments: vi.fn().mockReturnValue([
|
|
129
|
+
{ id: '54', path: 'agriculture-forestry' },
|
|
130
|
+
{ id: '12', path: 'applied-sciences' },
|
|
131
|
+
{ id: '356', path: 'computer-science' }
|
|
132
|
+
])
|
|
133
|
+
});
|
|
134
|
+
TuitionFeePresenter.getInstance = vi.fn().mockReturnValue({
|
|
135
|
+
getFragments: vi.fn().mockReturnValue([
|
|
136
|
+
{ id: '[0,2500]', path: 'affordable' },
|
|
137
|
+
{ id: '[2501,5000]', path: 'moderate' },
|
|
138
|
+
{ id: '[5001,10000]', path: 'expensive' }
|
|
139
|
+
])
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
afterEach(() => {
|
|
143
|
+
sitemapDependenciesHelper.resetMocks();
|
|
144
|
+
});
|
|
145
|
+
it('Should generate URLs for valid discipline-tuition fee combinations with affordable tuition fees', async () => {
|
|
146
|
+
// Mock the checkRulesForSitemap to only allow affordable tuition fee options
|
|
147
|
+
// due to AffordableTuitionFeeRule
|
|
148
|
+
const resultMap = new Map();
|
|
149
|
+
// Set up all possible combinations but only allow affordable ones
|
|
150
|
+
for (const discipline of ['54', '12', '356']) {
|
|
151
|
+
for (const tuitionFee of ['[0,2500]', '[2501,5000]', '[5001,10000]']) {
|
|
152
|
+
const key = `${FilterKey.TUITION_FEE}:${tuitionFee}|${FilterKey.DISCIPLINES}:${discipline}`;
|
|
153
|
+
// Only affordable tuition fee should pass
|
|
154
|
+
resultMap.set(key, tuitionFee === '[0,2500]');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
158
|
+
// Call the method via reflection since it's protected
|
|
159
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
160
|
+
// Calculate expected URLs: 3 disciplines * 1 tuition fee option (affordable) * 2 pages = 6 URLs
|
|
161
|
+
expect(urls).toHaveLength(3);
|
|
162
|
+
// Verify affordable tuition fee combinations
|
|
163
|
+
expect(urls).toContain('affordable/agriculture-forestry');
|
|
164
|
+
expect(urls).toContain('affordable/applied-sciences');
|
|
165
|
+
expect(urls).toContain('affordable/computer-science');
|
|
166
|
+
// Verify expensive tuition fees are excluded
|
|
167
|
+
expect(urls).not.toContain('moderate/agriculture-forestry');
|
|
168
|
+
expect(urls).not.toContain('expensive/agriculture-forestry');
|
|
169
|
+
});
|
|
170
|
+
it('Should exclude specific discipline-tuition fee combinations based on rules', async () => {
|
|
171
|
+
// Create a map that returns false for specific combinations
|
|
172
|
+
const resultMap = new Map();
|
|
173
|
+
// Only allow affordable tuition fee, but exclude computer science
|
|
174
|
+
for (const discipline of ['54', '12', '356']) {
|
|
175
|
+
for (const tuitionFee of ['[0,2500]', '[2501,5000]', '[5001,10000]']) {
|
|
176
|
+
const key = `${FilterKey.TUITION_FEE}:${tuitionFee}|${FilterKey.DISCIPLINES}:${discipline}`;
|
|
177
|
+
// Only affordable tuition fee should pass and exclude computer science
|
|
178
|
+
resultMap.set(key, tuitionFee === '[0,2500]' && discipline !== '356');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
182
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
183
|
+
// Calculate expected URLs: 2 disciplines (excluding computer science) * 1 tuition fee option (affordable) * 2 pages = 4 URLs
|
|
184
|
+
expect(urls).toHaveLength(2);
|
|
185
|
+
// Verify excluded combinations
|
|
186
|
+
expect(urls).not.toContain('affordable/computer-science');
|
|
187
|
+
expect(urls).not.toContain('moderate/computer-science');
|
|
188
|
+
expect(urls).not.toContain('expensive/computer-science');
|
|
189
|
+
// Verify included combinations
|
|
190
|
+
expect(urls).toContain('affordable/agriculture-forestry');
|
|
191
|
+
expect(urls).toContain('affordable/applied-sciences');
|
|
192
|
+
});
|
|
193
|
+
it('Should exclude all URLs when all rule checks fail', async () => {
|
|
194
|
+
// Create a map that returns false for all combinations
|
|
195
|
+
const resultMap = new Map();
|
|
196
|
+
for (const discipline of ['54', '12', '356']) {
|
|
197
|
+
for (const tuitionFee of ['[0,2500]', '[2501,5000]', '[5001,10000]']) {
|
|
198
|
+
const key = `${FilterKey.TUITION_FEE}:${tuitionFee}|${FilterKey.DISCIPLINES}:${discipline}`;
|
|
199
|
+
resultMap.set(key, false);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
203
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
204
|
+
// Should include no URLs
|
|
205
|
+
expect(urls).toHaveLength(0);
|
|
206
|
+
});
|
|
207
|
+
it('Should handle empty discipline fragments', async () => {
|
|
208
|
+
// Mock the DisciplinePresenter to return empty fragments
|
|
209
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
210
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
211
|
+
});
|
|
212
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
213
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
214
|
+
// Should return empty array
|
|
215
|
+
expect(urls).toHaveLength(0);
|
|
216
|
+
});
|
|
217
|
+
it('Should handle empty tuition fee fragments', async () => {
|
|
218
|
+
// Mock the TuitionFeePresenter to return empty fragments
|
|
219
|
+
TuitionFeePresenter.getInstance.mockReturnValueOnce({
|
|
220
|
+
getFragments: vi.fn().mockReturnValue([])
|
|
221
|
+
});
|
|
222
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap();
|
|
223
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
224
|
+
// Should return empty array
|
|
225
|
+
expect(urls).toHaveLength(0);
|
|
226
|
+
});
|
|
227
|
+
it('Should handle performance with large number of combinations', async () => {
|
|
228
|
+
// Generate larger datasets for testing
|
|
229
|
+
const largeDisciplineSet = Array.from({ length: 30 }, (_, index) => ({
|
|
230
|
+
id: `discipline-${index}`,
|
|
231
|
+
path: `discipline-path-${index}`
|
|
232
|
+
}));
|
|
233
|
+
const largeTuitionFeeSet = Array.from({ length: 5 }, (_, index) => ({
|
|
234
|
+
id: `tuition-${index}`,
|
|
235
|
+
path: `tuition-path-${index}`
|
|
236
|
+
}));
|
|
237
|
+
// Override mocks with large datasets
|
|
238
|
+
DisciplinePresenter.getInstance.mockReturnValueOnce({
|
|
239
|
+
getFragments: vi.fn().mockReturnValue(largeDisciplineSet)
|
|
240
|
+
});
|
|
241
|
+
TuitionFeePresenter.getInstance.mockReturnValueOnce({
|
|
242
|
+
getFragments: vi.fn().mockReturnValue(largeTuitionFeeSet)
|
|
243
|
+
});
|
|
244
|
+
// Mock to only allow combinations where discipline index is even and tuition fee index is 0
|
|
245
|
+
// This simulates the AffordableTuitionFeeRule that only allows affordable (lowest) tuition fees
|
|
246
|
+
const resultMap = new Map();
|
|
247
|
+
for (let d = 0; d < largeDisciplineSet.length; d++) {
|
|
248
|
+
for (let t = 0; t < largeTuitionFeeSet.length; t++) {
|
|
249
|
+
const disciplineId = largeDisciplineSet[d].id;
|
|
250
|
+
const tuitionFeeId = largeTuitionFeeSet[t].id;
|
|
251
|
+
const key = `${FilterKey.TUITION_FEE}:${tuitionFeeId}|${FilterKey.DISCIPLINES}:${disciplineId}`;
|
|
252
|
+
resultMap.set(key, d % 2 === 0 && t === 0); // Only even disciplines and affordable (index 0) tuition
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
|
|
256
|
+
const urls = await tuitionFeeDisciplinePolicy.generateUrls();
|
|
257
|
+
// Calculate expected count: 15 disciplines (even indices) * 1 tuition fee (index 0) * 2 pages
|
|
258
|
+
// = 15 * 1 * 2 = 30 URLs
|
|
259
|
+
expect(urls).toHaveLength(15);
|
|
260
|
+
// Test specific items
|
|
261
|
+
expect(urls).toContain('tuition-path-0/discipline-path-0'); // Even discipline, affordable tuition
|
|
262
|
+
expect(urls).toContain('tuition-path-0/discipline-path-2'); // Even discipline, affordable tuition
|
|
263
|
+
expect(urls).not.toContain('tuition-path-0/discipline-path-1'); // Odd discipline
|
|
264
|
+
expect(urls).not.toContain('tuition-path-1/discipline-path-0'); // Non-affordable tuition
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
3
|
+
import { PortalType } from '@studyportals/domain-client';
|
|
4
|
+
import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
|
|
5
|
+
import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
|
|
6
|
+
import { Unfiltered } from '@/programmes/policies/Unfiltered';
|
|
7
|
+
describe('Policy:Unfiltered', () => {
|
|
8
|
+
describe('shouldIndex', () => {
|
|
9
|
+
let searchDependenciesHelper;
|
|
10
|
+
let unfilteredPolicy;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
13
|
+
unfilteredPolicy = new Unfiltered(searchDependenciesHelper.dependencies);
|
|
14
|
+
searchDependenciesHelper.setPageNumber(1);
|
|
15
|
+
searchDependenciesHelper.setPortalType(PortalType.MASTER);
|
|
16
|
+
searchDependenciesHelper.setResultsCount(20);
|
|
17
|
+
});
|
|
18
|
+
it.each([PortalType.MASTER, PortalType.BACHELOR, PortalType.PHD, PortalType.SHORT])('Should return true when no filters are selected', async (portalType) => {
|
|
19
|
+
searchDependenciesHelper.setPortalType(portalType);
|
|
20
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
21
|
+
const result = await unfilteredPolicy.shouldIndex();
|
|
22
|
+
expect(result).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it.each([
|
|
25
|
+
[FilterKey.CONTINENT, '1'], // Europe
|
|
26
|
+
[FilterKey.COUNTRY, '30'], // UK
|
|
27
|
+
[FilterKey.AREA, '137'], // Western Australia
|
|
28
|
+
[FilterKey.DISCIPLINES, '54'], // Agriculture & Forestry
|
|
29
|
+
[FilterKey.DURATION, '[360,360]'], // 1 year
|
|
30
|
+
[FilterKey.ATTENDANCE, 'fulltime'],
|
|
31
|
+
[FilterKey.DELIVERY_METHOD, 'online'],
|
|
32
|
+
[FilterKey.DEGREE_TYPE, 'mba'],
|
|
33
|
+
[FilterKey.EDUCATIONAL_FORM, 'academic'],
|
|
34
|
+
[FilterKey.SPECIAL_PROGRAMMES, 'erasmus'],
|
|
35
|
+
[FilterKey.TUITION_FEE, '[0,2500]'] // Affordable
|
|
36
|
+
])('Should return false any filter value is selected', async (key, value) => {
|
|
37
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[key, [value]]]));
|
|
38
|
+
const result = await unfilteredPolicy.shouldIndex();
|
|
39
|
+
expect(result).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it('Should return false when page number is higher than 2', async () => {
|
|
42
|
+
searchDependenciesHelper.setPageNumber(15);
|
|
43
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
44
|
+
const result = await unfilteredPolicy.shouldIndex();
|
|
45
|
+
expect(result).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
it('Should return false when portal type is distance learning', async () => {
|
|
48
|
+
searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
|
|
49
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
50
|
+
const result = await unfilteredPolicy.shouldIndex();
|
|
51
|
+
expect(result).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
it('Should return false when result count is less than 7', async () => {
|
|
54
|
+
searchDependenciesHelper.setResultsCount(4);
|
|
55
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
56
|
+
const result = await unfilteredPolicy.shouldIndex();
|
|
57
|
+
expect(result).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('generateUrls', () => {
|
|
61
|
+
let sitemapDependenciesHelper;
|
|
62
|
+
let unfilteredPolicy;
|
|
63
|
+
beforeEach(() => {
|
|
64
|
+
sitemapDependenciesHelper = new SitemapDependencies();
|
|
65
|
+
sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
|
|
66
|
+
unfilteredPolicy = new Unfiltered(sitemapDependenciesHelper.dependencies);
|
|
67
|
+
});
|
|
68
|
+
afterEach(() => {
|
|
69
|
+
sitemapDependenciesHelper.resetMocks();
|
|
70
|
+
});
|
|
71
|
+
it('Should generate a single empty string URL for the unfiltered page', async () => {
|
|
72
|
+
// This policy is unique because it always returns a single empty string
|
|
73
|
+
// representing the base/unfiltered URL of the site
|
|
74
|
+
const urls = await unfilteredPolicy.generateUrls(); // Note: This method is public in Unfiltered
|
|
75
|
+
// Verify the result
|
|
76
|
+
expect(urls).toHaveLength(1);
|
|
77
|
+
expect(urls[0]).toBe('');
|
|
78
|
+
});
|
|
79
|
+
it('Should always return the same result regardless of checkRulesForSitemap', async () => {
|
|
80
|
+
// Mock to make checkRulesForSitemap return false
|
|
81
|
+
sitemapDependenciesHelper.mockCheckRulesForSitemap(new Map([['', false]]));
|
|
82
|
+
// The result should still be the same since this policy doesn't actually use
|
|
83
|
+
// checkRulesForSitemap in its generateUrls implementation
|
|
84
|
+
const urls = await unfilteredPolicy.generateUrls();
|
|
85
|
+
// Verify the result
|
|
86
|
+
expect(urls).toHaveLength(1);
|
|
87
|
+
expect(urls[0]).toBe('');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
|
|
3
|
+
import { AffordableTuitionFeeRule } from '@/programmes/rules/AffordableTuitionFeeRule';
|
|
4
|
+
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
5
|
+
describe('Rule:AffordableTuitionFeeRule', () => {
|
|
6
|
+
describe('forSearch', () => {
|
|
7
|
+
let searchDependenciesHelper;
|
|
8
|
+
let rule;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
11
|
+
rule = new AffordableTuitionFeeRule();
|
|
12
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
13
|
+
});
|
|
14
|
+
it('Returns true if affordable tuition fee is affordable', async () => {
|
|
15
|
+
const tuitionFee = '[0,2500]'; // Affordable
|
|
16
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.TUITION_FEE, [tuitionFee]]]));
|
|
17
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
18
|
+
expect(result).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it('Returns false if tuition fee is not affordable', async () => {
|
|
21
|
+
const tuitionFee = '[0,3000]';
|
|
22
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.TUITION_FEE, [tuitionFee]]]));
|
|
23
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
24
|
+
expect(result).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
|
|
3
|
+
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
4
|
+
import { DegreeCountryDisciplineSpecificRule } from '@/programmes/rules/DegreeCountryDisciplineSpecificRule';
|
|
5
|
+
describe('Rule:DegreeCountryDisciplineSpecificRule', () => {
|
|
6
|
+
describe('forSearch', () => {
|
|
7
|
+
let searchDependenciesHelper;
|
|
8
|
+
let rule;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
searchDependenciesHelper = new SearchDependencies();
|
|
11
|
+
rule = new DegreeCountryDisciplineSpecificRule();
|
|
12
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([]));
|
|
13
|
+
});
|
|
14
|
+
describe('msc valid countries', () => {
|
|
15
|
+
it.each([
|
|
16
|
+
'82', // USA
|
|
17
|
+
'56', // Canada
|
|
18
|
+
'11', // Germany
|
|
19
|
+
'30' // UK
|
|
20
|
+
])('Should return true for msc with country %s', async (countryId) => {
|
|
21
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
22
|
+
[FilterKey.DEGREE_TYPE, ['msc']],
|
|
23
|
+
[FilterKey.COUNTRY, [countryId]],
|
|
24
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
25
|
+
]));
|
|
26
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
27
|
+
expect(result).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
it('Should return false for msc with invalid country', async () => {
|
|
30
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
31
|
+
[FilterKey.DEGREE_TYPE, ['msc']],
|
|
32
|
+
[FilterKey.COUNTRY, ['999']],
|
|
33
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
34
|
+
]));
|
|
35
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
36
|
+
expect(result).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('mba valid countries', () => {
|
|
40
|
+
it.each([
|
|
41
|
+
'82', // USA
|
|
42
|
+
'30' // UK
|
|
43
|
+
])('Should return true for mba with country %s', async (countryId) => {
|
|
44
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
45
|
+
[FilterKey.DEGREE_TYPE, ['mba']],
|
|
46
|
+
[FilterKey.COUNTRY, [countryId]],
|
|
47
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
48
|
+
]));
|
|
49
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
50
|
+
expect(result).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it.each([
|
|
53
|
+
'56', // Canada (not allowed for MBA)
|
|
54
|
+
'11', // Germany (not allowed for MBA)
|
|
55
|
+
'202' // Australia (not allowed for MBA)
|
|
56
|
+
])('Should return false for mba with country %s', async (countryId) => {
|
|
57
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
58
|
+
[FilterKey.DEGREE_TYPE, ['mba']],
|
|
59
|
+
[FilterKey.COUNTRY, [countryId]],
|
|
60
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
61
|
+
]));
|
|
62
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
63
|
+
expect(result).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('med valid countries', () => {
|
|
67
|
+
it.each([
|
|
68
|
+
'202', // Australia
|
|
69
|
+
'56' // Canada
|
|
70
|
+
])('Should return true for med with country %s', async (countryId) => {
|
|
71
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
72
|
+
[FilterKey.DEGREE_TYPE, ['med']],
|
|
73
|
+
[FilterKey.COUNTRY, [countryId]],
|
|
74
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
75
|
+
]));
|
|
76
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
77
|
+
expect(result).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it.each([
|
|
80
|
+
'82', // USA (not allowed for MEd)
|
|
81
|
+
'30', // UK (not allowed for MEd)
|
|
82
|
+
'11' // Germany (not allowed for MEd)
|
|
83
|
+
])('Should return false for med with country %s', async (countryId) => {
|
|
84
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
85
|
+
[FilterKey.DEGREE_TYPE, ['med']],
|
|
86
|
+
[FilterKey.COUNTRY, [countryId]],
|
|
87
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
88
|
+
]));
|
|
89
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
90
|
+
expect(result).toBe(false);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe('edge cases', () => {
|
|
94
|
+
it('Should return false when degree type is missing', async () => {
|
|
95
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
96
|
+
[FilterKey.COUNTRY, ['82']],
|
|
97
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
98
|
+
]));
|
|
99
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
100
|
+
expect(result).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
it('Should return false when country is missing', async () => {
|
|
103
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
104
|
+
[FilterKey.DEGREE_TYPE, ['msc']],
|
|
105
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
106
|
+
]));
|
|
107
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
108
|
+
expect(result).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
it('Should return false for unknown degree types', async () => {
|
|
111
|
+
searchDependenciesHelper.setFilterKeyValues(new Map([
|
|
112
|
+
[FilterKey.DEGREE_TYPE, ['unknown-degree']],
|
|
113
|
+
[FilterKey.COUNTRY, ['82']],
|
|
114
|
+
[FilterKey.DISCIPLINES, ['289']] // Valid discipline for testing
|
|
115
|
+
]));
|
|
116
|
+
const result = await rule.forSearch(searchDependenciesHelper.dependencies);
|
|
117
|
+
expect(result).toBe(false);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|