@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,334 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
2
|
+
import Validator from '@adobe/structured-data-validator';
|
|
3
|
+
import { OrganisationStructuredDataFactory } from '@/structured-data/OrganisationStructuredDataFactory';
|
|
4
|
+
describe('OrganisationStructuredDataFactory', () => {
|
|
5
|
+
let factory;
|
|
6
|
+
let mockOrganisationCards;
|
|
7
|
+
let mockFaqItems;
|
|
8
|
+
let mockBreadcrumbs;
|
|
9
|
+
let validator;
|
|
10
|
+
beforeEach(async () => {
|
|
11
|
+
// Fetch the current schema.org schema and create validator instance
|
|
12
|
+
const schemaOrgJson = await (await fetch('https://schema.org/version/latest/schemaorg-current-https.jsonld')).json();
|
|
13
|
+
validator = new Validator(schemaOrgJson);
|
|
14
|
+
factory = new OrganisationStructuredDataFactory();
|
|
15
|
+
// Create mock data
|
|
16
|
+
setupMockData();
|
|
17
|
+
});
|
|
18
|
+
function setupMockData() {
|
|
19
|
+
// Mock FAQ items
|
|
20
|
+
mockFaqItems = [
|
|
21
|
+
{
|
|
22
|
+
question: 'What programs does the university offer?',
|
|
23
|
+
answer: '<p>We offer undergraduate and graduate programs in <ul><li>Computer Science</li><li>Business Administration</li><li>Engineering</li></ul></p>'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
question: 'How do I apply for admission?',
|
|
27
|
+
answer: '<p>You can apply online through our admission portal. The application deadline is March 1st.</p>'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: 'What are the tuition fees?',
|
|
31
|
+
answer: '<p>Tuition fees vary by program. Please check our <a href="/fees">fee schedule</a> for detailed information.</p>'
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
// Mock breadcrumbs
|
|
35
|
+
mockBreadcrumbs = [
|
|
36
|
+
{
|
|
37
|
+
name: 'Home',
|
|
38
|
+
position: 1,
|
|
39
|
+
url: 'https://localhost:8080/'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Universities',
|
|
43
|
+
position: 2,
|
|
44
|
+
url: 'https://localhost:8080/universities'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Universities in USA',
|
|
48
|
+
position: 3,
|
|
49
|
+
url: 'https://localhost:8080/universities/usa'
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
// Mock organisation cards
|
|
53
|
+
mockOrganisationCards = createMockOrganisationCards();
|
|
54
|
+
}
|
|
55
|
+
function createMockOrganisationCards() {
|
|
56
|
+
const createMockReviewRating = (avgRating, quantity, hasEnoughQuantity = true) => ({
|
|
57
|
+
getAverageStarRating: vi.fn().mockReturnValue(avgRating),
|
|
58
|
+
getQuantity: vi.fn().mockReturnValue(quantity),
|
|
59
|
+
getAverage: vi.fn().mockReturnValue(avgRating),
|
|
60
|
+
hasEnoughQuantity: vi.fn().mockReturnValue(hasEnoughQuantity)
|
|
61
|
+
});
|
|
62
|
+
// Organisation 1 - University with excellent ratings
|
|
63
|
+
const org1 = {
|
|
64
|
+
name: 'Stanford University',
|
|
65
|
+
url: 'https://studyportals.com/universities/stanford-university',
|
|
66
|
+
description: 'Stanford University is a private research university located in Stanford, California. Known for its academic excellence and innovation in technology and business.',
|
|
67
|
+
reviewRating: createMockReviewRating(4.8, 245)
|
|
68
|
+
};
|
|
69
|
+
// Organisation 2 - University with good ratings
|
|
70
|
+
const org2 = {
|
|
71
|
+
name: 'MIT - Massachusetts Institute of Technology',
|
|
72
|
+
url: 'https://studyportals.com/universities/mit',
|
|
73
|
+
description: 'MIT is a private research university in Cambridge, Massachusetts. It is renowned for its programs in engineering, computer science, and technology.',
|
|
74
|
+
reviewRating: createMockReviewRating(4.6, 189)
|
|
75
|
+
};
|
|
76
|
+
// Organisation 3 - University with moderate ratings
|
|
77
|
+
const org3 = {
|
|
78
|
+
name: 'University of California, Berkeley',
|
|
79
|
+
url: 'https://studyportals.com/universities/uc-berkeley',
|
|
80
|
+
description: 'UC Berkeley is a public research university in Berkeley, California. It offers a wide range of undergraduate and graduate programs.',
|
|
81
|
+
reviewRating: createMockReviewRating(4.2, 156)
|
|
82
|
+
};
|
|
83
|
+
// Organisation 4 - University without sufficient ratings
|
|
84
|
+
const org4 = {
|
|
85
|
+
name: 'New University',
|
|
86
|
+
url: 'https://studyportals.com/universities/new-university',
|
|
87
|
+
description: 'A newly established university offering innovative programs in emerging fields.',
|
|
88
|
+
reviewRating: createMockReviewRating(3.5, 8, false) // Not enough quantity
|
|
89
|
+
};
|
|
90
|
+
// Organisation 5 - University without any ratings
|
|
91
|
+
const org5 = {
|
|
92
|
+
name: 'International College',
|
|
93
|
+
url: 'https://studyportals.com/universities/international-college',
|
|
94
|
+
description: 'An international college providing quality education in various disciplines.',
|
|
95
|
+
reviewRating: undefined
|
|
96
|
+
};
|
|
97
|
+
// Organisation 6 - University with minimal description
|
|
98
|
+
const org6 = {
|
|
99
|
+
name: 'City Technical Institute',
|
|
100
|
+
url: 'https://studyportals.com/universities/city-tech',
|
|
101
|
+
description: undefined,
|
|
102
|
+
reviewRating: createMockReviewRating(4.1, 67)
|
|
103
|
+
};
|
|
104
|
+
return [org1, org2, org3, org4, org5, org6];
|
|
105
|
+
}
|
|
106
|
+
describe('buildStructuredData - Main Public Interface', () => {
|
|
107
|
+
it('should generate complete structured data with all components', async () => {
|
|
108
|
+
const result = await factory.buildStructuredData('Top Universities in California', 'Discover the best universities and colleges in California for international students', mockOrganisationCards, mockFaqItems, mockBreadcrumbs);
|
|
109
|
+
// Basic structure
|
|
110
|
+
expect(result['@context']).toBe('https://schema.org');
|
|
111
|
+
expect(result['@type']).toBe('SearchResultsPage');
|
|
112
|
+
expect(result.name).toBe('Top Universities in California');
|
|
113
|
+
expect(result.description).toBe('Discover the best universities and colleges in California for international students');
|
|
114
|
+
expect(result.mainEntity).toHaveLength(6); // All organisations should be included
|
|
115
|
+
});
|
|
116
|
+
it('should generate structured data with empty arrays gracefully', async () => {
|
|
117
|
+
const result = await factory.buildStructuredData('No Universities Found', 'No matching universities found for your search criteria', [], [], []);
|
|
118
|
+
expect(result['@context']).toBe('https://schema.org');
|
|
119
|
+
expect(result['@type']).toBe('SearchResultsPage');
|
|
120
|
+
expect(result.name).toBe('No Universities Found');
|
|
121
|
+
expect(result.description).toBe('No matching universities found for your search criteria');
|
|
122
|
+
expect(result.mainEntity).toHaveLength(0);
|
|
123
|
+
expect(result.offers).toBeUndefined();
|
|
124
|
+
expect(result.hasPart).toBeUndefined();
|
|
125
|
+
expect(result.breadcrumb).toBeUndefined();
|
|
126
|
+
});
|
|
127
|
+
it('should include FAQ section when FAQ items are provided', async () => {
|
|
128
|
+
const result = await factory.buildStructuredData('Universities with FAQ', 'Universities information with frequently asked questions', mockOrganisationCards.slice(0, 2), mockFaqItems, []);
|
|
129
|
+
expect(result.hasPart).toBeDefined();
|
|
130
|
+
expect(result.hasPart['@type']).toBe('FAQPage');
|
|
131
|
+
expect(result.hasPart.mainEntity).toHaveLength(3);
|
|
132
|
+
// Check FAQ structure
|
|
133
|
+
const firstFaq = result.hasPart.mainEntity[0];
|
|
134
|
+
expect(firstFaq['@type']).toBe('Question');
|
|
135
|
+
expect(firstFaq.name).toBe('What programs does the university offer?');
|
|
136
|
+
expect(firstFaq.acceptedAnswer['@type']).toBe('Answer');
|
|
137
|
+
expect(firstFaq.acceptedAnswer.text).toContain('Computer Science');
|
|
138
|
+
expect(firstFaq.acceptedAnswer.text).toContain('• Computer Science'); // HTML list converted to bullet points
|
|
139
|
+
});
|
|
140
|
+
it('should include breadcrumb navigation when breadcrumbs are provided', async () => {
|
|
141
|
+
const result = await factory.buildStructuredData('Universities with Breadcrumbs', 'Universities with navigation breadcrumbs', mockOrganisationCards.slice(0, 2), [], mockBreadcrumbs);
|
|
142
|
+
expect(result.breadcrumb).toBeDefined();
|
|
143
|
+
expect(result.breadcrumb['@type']).toBe('BreadcrumbList');
|
|
144
|
+
expect(result.breadcrumb.itemListElement).toHaveLength(3);
|
|
145
|
+
// Check breadcrumb structure
|
|
146
|
+
const firstBreadcrumb = result.breadcrumb.itemListElement[0];
|
|
147
|
+
expect(firstBreadcrumb['@type']).toBe('ListItem');
|
|
148
|
+
expect(firstBreadcrumb.name).toBe('Home');
|
|
149
|
+
expect(firstBreadcrumb.position).toBe(1);
|
|
150
|
+
expect(firstBreadcrumb.item).toBe('https://localhost:8080/');
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('buildStructuredDataForCard - Organisation-specific Logic', () => {
|
|
154
|
+
it('should create CollegeOrUniversity structured data with all properties', () => {
|
|
155
|
+
const org = mockOrganisationCards[0]; // Stanford with ratings
|
|
156
|
+
const entity = {
|
|
157
|
+
card: org,
|
|
158
|
+
reviewRating: {
|
|
159
|
+
rating: 4.8,
|
|
160
|
+
quantity: 245
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const result = factory['buildStructuredDataForCard'](entity);
|
|
164
|
+
expect(result).toBeDefined();
|
|
165
|
+
expect(result['@type']).toBe('CollegeOrUniversity');
|
|
166
|
+
expect(result.name).toBe('Stanford University');
|
|
167
|
+
expect(result.description).toBe('Stanford University is a private research university located in Stanford, California. Known for its academic excellence and innovation in technology and business.');
|
|
168
|
+
expect(result.url).toBe('https://studyportals.com/universities/stanford-university');
|
|
169
|
+
expect(result.aggregateRating).toBeDefined();
|
|
170
|
+
expect(result.aggregateRating['@type']).toBe('AggregateRating');
|
|
171
|
+
expect(result.aggregateRating.ratingValue).toBe(4.8);
|
|
172
|
+
expect(result.aggregateRating.ratingCount).toBe(245);
|
|
173
|
+
});
|
|
174
|
+
it('should create CollegeOrUniversity without aggregate rating when no review rating', () => {
|
|
175
|
+
const org = mockOrganisationCards[4]; // International College without ratings
|
|
176
|
+
const entity = {
|
|
177
|
+
card: org,
|
|
178
|
+
reviewRating: undefined
|
|
179
|
+
};
|
|
180
|
+
const result = factory['buildStructuredDataForCard'](entity);
|
|
181
|
+
expect(result).toBeDefined();
|
|
182
|
+
expect(result['@type']).toBe('CollegeOrUniversity');
|
|
183
|
+
expect(result.name).toBe('International College');
|
|
184
|
+
expect(result.aggregateRating).toBeUndefined();
|
|
185
|
+
});
|
|
186
|
+
it('should handle organisation without description', () => {
|
|
187
|
+
const org = mockOrganisationCards[5]; // City Technical Institute without description
|
|
188
|
+
const entity = {
|
|
189
|
+
card: org,
|
|
190
|
+
reviewRating: {
|
|
191
|
+
rating: 4.1,
|
|
192
|
+
quantity: 67
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
const result = factory['buildStructuredDataForCard'](entity);
|
|
196
|
+
expect(result).toBeDefined();
|
|
197
|
+
expect(result.name).toBe('City Technical Institute');
|
|
198
|
+
expect(result.description).toBeUndefined();
|
|
199
|
+
expect(result.aggregateRating).toBeDefined();
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('getRating - Rating Logic', () => {
|
|
203
|
+
it('should return rating data when review rating exists and has enough quantity', () => {
|
|
204
|
+
const org = mockOrganisationCards[0]; // Stanford with good ratings
|
|
205
|
+
const result = factory['getRating'](org);
|
|
206
|
+
expect(result).toBeDefined();
|
|
207
|
+
expect(result.rating).toBe(4.8);
|
|
208
|
+
expect(result.quantity).toBe(245);
|
|
209
|
+
});
|
|
210
|
+
it('should return undefined when review rating does not have enough quantity', () => {
|
|
211
|
+
const org = mockOrganisationCards[3]; // New University with insufficient ratings
|
|
212
|
+
const result = factory['getRating'](org);
|
|
213
|
+
expect(result).toBeUndefined();
|
|
214
|
+
});
|
|
215
|
+
it('should return undefined when no review rating exists', () => {
|
|
216
|
+
const org = mockOrganisationCards[4]; // International College without ratings
|
|
217
|
+
const result = factory['getRating'](org);
|
|
218
|
+
expect(result).toBeUndefined();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
describe('Base Class Functionality - Inherited from SearchStructuredDataFactory', () => {
|
|
222
|
+
it('should construct aggregate rating correctly', () => {
|
|
223
|
+
const reviewRating = {
|
|
224
|
+
rating: 4.5,
|
|
225
|
+
quantity: 150
|
|
226
|
+
};
|
|
227
|
+
const result = factory['constructAggregateRating'](reviewRating);
|
|
228
|
+
expect(result).toBeDefined();
|
|
229
|
+
expect(result['@type']).toBe('AggregateRating');
|
|
230
|
+
expect(result.ratingValue).toBe(4.5);
|
|
231
|
+
expect(result.ratingCount).toBe(150);
|
|
232
|
+
expect(result.bestRating).toBe(5);
|
|
233
|
+
expect(result.worstRating).toBe(1);
|
|
234
|
+
});
|
|
235
|
+
it('should return undefined for aggregate rating when no review rating provided', () => {
|
|
236
|
+
const result = factory['constructAggregateRating'](undefined);
|
|
237
|
+
expect(result).toBeUndefined();
|
|
238
|
+
});
|
|
239
|
+
it('should construct FAQ page correctly', () => {
|
|
240
|
+
const result = factory['constructOptionalFaqPage'](mockFaqItems);
|
|
241
|
+
expect(result).toBeDefined();
|
|
242
|
+
expect(result['@type']).toBe('FAQPage');
|
|
243
|
+
expect(result.mainEntity).toHaveLength(3);
|
|
244
|
+
const firstQuestion = result.mainEntity[0];
|
|
245
|
+
expect(firstQuestion['@type']).toBe('Question');
|
|
246
|
+
expect(firstQuestion.name).toBe('What programs does the university offer?');
|
|
247
|
+
expect(firstQuestion.acceptedAnswer['@type']).toBe('Answer');
|
|
248
|
+
// HTML should be stripped but lists converted to bullet points
|
|
249
|
+
expect(firstQuestion.acceptedAnswer.text).toContain('• Computer Science');
|
|
250
|
+
});
|
|
251
|
+
it('should return undefined for FAQ page when no FAQ items provided', () => {
|
|
252
|
+
const result = factory['constructOptionalFaqPage']([]);
|
|
253
|
+
expect(result).toBeUndefined();
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe('Schema.org Validation', () => {
|
|
257
|
+
it('should generate valid structured data according to schema.org', async () => {
|
|
258
|
+
const result = await factory.buildStructuredData('Best Universities for Computer Science', 'Top-ranked universities offering computer science programs', mockOrganisationCards.slice(0, 3), // Use first 3 organisations
|
|
259
|
+
mockFaqItems, mockBreadcrumbs);
|
|
260
|
+
// Validate the structured data against schema.org
|
|
261
|
+
const validationResults = await validator.validate([result]);
|
|
262
|
+
// Check for validation errors
|
|
263
|
+
const errors = validationResults.filter(result => result.type === 'error');
|
|
264
|
+
if (errors.length > 0) {
|
|
265
|
+
console.error('Schema validation errors:', errors);
|
|
266
|
+
}
|
|
267
|
+
// The structured data should be valid (no critical errors)
|
|
268
|
+
expect(errors.length).toBe(0);
|
|
269
|
+
});
|
|
270
|
+
it('should generate valid structured data even with minimal organisation data', async () => {
|
|
271
|
+
const minimalOrg = {
|
|
272
|
+
name: 'Minimal University',
|
|
273
|
+
url: 'https://studyportals.com/universities/minimal',
|
|
274
|
+
description: undefined,
|
|
275
|
+
reviewRating: undefined
|
|
276
|
+
};
|
|
277
|
+
const result = await factory.buildStructuredData('Minimal Data Test', 'Testing with minimal organisation data', [minimalOrg], [], []);
|
|
278
|
+
// Validate the structured data against schema.org
|
|
279
|
+
const validationResults = await validator.validate([result]);
|
|
280
|
+
// Check for validation errors
|
|
281
|
+
const errors = validationResults.filter(result => result.type === 'error');
|
|
282
|
+
if (errors.length > 0) {
|
|
283
|
+
console.error('Schema validation errors:', errors);
|
|
284
|
+
}
|
|
285
|
+
// Should still be valid even with minimal data
|
|
286
|
+
expect(errors.length).toBe(0);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
describe('Edge Cases and Error Handling', () => {
|
|
290
|
+
it('should handle organisations with various rating scenarios', async () => {
|
|
291
|
+
const mixedOrgs = [
|
|
292
|
+
mockOrganisationCards[0], // High ratings
|
|
293
|
+
mockOrganisationCards[3], // Insufficient ratings
|
|
294
|
+
mockOrganisationCards[4] // No ratings
|
|
295
|
+
];
|
|
296
|
+
const result = await factory.buildStructuredData('Mixed Rating Scenarios', 'Testing various rating scenarios', mixedOrgs, [], []);
|
|
297
|
+
expect(result.mainEntity).toHaveLength(3);
|
|
298
|
+
// First org should have aggregate rating
|
|
299
|
+
const firstOrg = result.mainEntity[0];
|
|
300
|
+
expect(firstOrg.aggregateRating).toBeDefined();
|
|
301
|
+
// Second and third orgs should not have aggregate rating
|
|
302
|
+
const secondOrg = result.mainEntity[1];
|
|
303
|
+
const thirdOrg = result.mainEntity[2];
|
|
304
|
+
expect(secondOrg.aggregateRating).toBeUndefined();
|
|
305
|
+
expect(thirdOrg.aggregateRating).toBeUndefined();
|
|
306
|
+
});
|
|
307
|
+
it('should handle very long descriptions gracefully', async () => {
|
|
308
|
+
const longDescriptionOrg = {
|
|
309
|
+
name: 'University with Long Description',
|
|
310
|
+
url: 'https://studyportals.com/universities/long-desc',
|
|
311
|
+
description: 'This is a very long description that goes on and on about the university and its various programs, facilities, faculty, student life, campus culture, research opportunities, international partnerships, alumni network, and many other aspects that make it a comprehensive educational institution. '.repeat(10),
|
|
312
|
+
reviewRating: undefined
|
|
313
|
+
};
|
|
314
|
+
const result = await factory.buildStructuredData('Long Description Test', 'Testing with very long description', [longDescriptionOrg], [], []);
|
|
315
|
+
expect(result.mainEntity).toHaveLength(1);
|
|
316
|
+
const org = result.mainEntity[0];
|
|
317
|
+
expect(org.description).toBeDefined();
|
|
318
|
+
expect(org.description.length).toBeGreaterThan(1000);
|
|
319
|
+
});
|
|
320
|
+
it('should handle special characters in organisation data', async () => {
|
|
321
|
+
const specialCharOrg = {
|
|
322
|
+
name: 'Université de Münchën & São Paulo',
|
|
323
|
+
url: 'https://studyportals.com/universities/special-chars',
|
|
324
|
+
description: 'A university with special characters: åäö, ñÑ, çÇ, and émojis 🎓📚',
|
|
325
|
+
reviewRating: undefined
|
|
326
|
+
};
|
|
327
|
+
const result = await factory.buildStructuredData('Special Characters Test', 'Testing with special characters and unicode', [specialCharOrg], [], []);
|
|
328
|
+
expect(result.mainEntity).toHaveLength(1);
|
|
329
|
+
const org = result.mainEntity[0];
|
|
330
|
+
expect(org.name).toBe('Université de Münchën & São Paulo');
|
|
331
|
+
expect(org.description).toContain('🎓📚');
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|