@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.
Files changed (520) hide show
  1. package/dist/organisations-seo/index.d.ts +3 -3
  2. package/dist/organisations-seo/index.js +1 -1
  3. package/dist/programmes-seo/index.d.ts +5 -5
  4. package/dist/programmes-seo/index.js +1 -1
  5. package/dist/scholarships-seo/index.d.ts +4 -4
  6. package/dist/scholarships-seo/index.js +2 -2
  7. package/dist/sitemap-generator-seo/index.d.ts +14 -14
  8. package/dist/sitemap-generator-seo/index.js +5 -5
  9. package/dist/src/common/IDependencies.d.ts +1 -1
  10. package/dist/src/common/IPresenter.d.ts +1 -1
  11. package/dist/src/common/ISearchDependencies.d.ts +1 -1
  12. package/dist/src/common/ISeoDependencies.d.ts +2 -2
  13. package/dist/src/common/ISitemapDependencies.d.ts +2 -2
  14. package/dist/src/common/ISitemapUrlGenerator.d.ts +1 -1
  15. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +1 -1
  16. package/dist/src/common/policies/BaseSeoIndexabilityPolicy.js +2 -2
  17. package/dist/src/common/rules/NoFiltersSelectedRule.d.ts +2 -2
  18. package/dist/src/common/rules/OnlineAttendanceRule.d.ts +1 -1
  19. package/dist/src/common/rules/OnlineAttendanceRule.js +1 -1
  20. package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +2 -2
  21. package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +2 -2
  22. package/dist/src/organisations/IOrganisationSearchApplicationState.d.ts +1 -1
  23. package/dist/src/organisations/ISeoSortingState.d.ts +1 -1
  24. package/dist/src/organisations/SearchIndexabilityManager.d.ts +4 -4
  25. package/dist/src/organisations/SearchIndexabilityManager.js +2 -2
  26. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +3 -3
  27. package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +3 -3
  28. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +1 -1
  29. package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +1 -1
  30. package/dist/src/organisations/policies/our-picks/Area.d.ts +5 -5
  31. package/dist/src/organisations/policies/our-picks/Area.js +6 -6
  32. package/dist/src/organisations/policies/our-picks/AreaAttendance.d.ts +7 -7
  33. package/dist/src/organisations/policies/our-picks/AreaAttendance.js +9 -9
  34. package/dist/src/organisations/policies/our-picks/Attendance.d.ts +6 -6
  35. package/dist/src/organisations/policies/our-picks/Attendance.js +7 -7
  36. package/dist/src/organisations/policies/our-picks/Continent.d.ts +5 -5
  37. package/dist/src/organisations/policies/our-picks/Continent.js +6 -6
  38. package/dist/src/organisations/policies/our-picks/Country.d.ts +5 -5
  39. package/dist/src/organisations/policies/our-picks/Country.js +6 -6
  40. package/dist/src/organisations/policies/our-picks/CountryAreaCity.d.ts +6 -6
  41. package/dist/src/organisations/policies/our-picks/CountryAreaCity.js +7 -7
  42. package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +7 -7
  43. package/dist/src/organisations/policies/our-picks/CountryAttendance.js +9 -9
  44. package/dist/src/organisations/policies/our-picks/CountryCity.d.ts +6 -6
  45. package/dist/src/organisations/policies/our-picks/CountryCity.js +7 -7
  46. package/dist/src/organisations/policies/our-picks/Unfiltered.d.ts +4 -4
  47. package/dist/src/organisations/policies/our-picks/Unfiltered.js +4 -4
  48. package/dist/src/organisations/policies/ranked/RankedArea.d.ts +4 -4
  49. package/dist/src/organisations/policies/ranked/RankedArea.js +4 -4
  50. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +5 -5
  51. package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +6 -6
  52. package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +5 -5
  53. package/dist/src/organisations/policies/ranked/RankedAttendance.js +5 -5
  54. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +5 -5
  55. package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +6 -6
  56. package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +4 -4
  57. package/dist/src/organisations/policies/ranked/RankedContinent.js +4 -4
  58. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +6 -6
  59. package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +7 -7
  60. package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +4 -4
  61. package/dist/src/organisations/policies/ranked/RankedCountry.js +4 -4
  62. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +5 -5
  63. package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +6 -6
  64. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +4 -4
  65. package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +5 -5
  66. package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +4 -4
  67. package/dist/src/organisations/policies/ranked/RankedDiscipline.js +4 -4
  68. package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +3 -3
  69. package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +2 -2
  70. package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +3 -3
  71. package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +1 -1
  72. package/dist/src/organisations/rules/ContinentIsEuropeRule.js +1 -1
  73. package/dist/src/organisations/rules/ExcludeByIdForCitiesRule.d.ts +3 -3
  74. package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.d.ts +3 -3
  75. package/dist/src/organisations/rules/MinimumAmountOfRankedResultsRule.js +1 -1
  76. package/dist/src/organisations/rules/MinimumAmountOfResultsRule.d.ts +4 -4
  77. package/dist/src/organisations/rules/MinimumAmountOfResultsRule.js +1 -1
  78. package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +2 -2
  79. package/dist/src/organisations/types/IOrganisationSearchDependencies.d.ts +2 -2
  80. package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +3 -3
  81. package/dist/src/presenters/AreaPresenter.d.ts +1 -1
  82. package/dist/src/presenters/AttendancePresenter.d.ts +1 -1
  83. package/dist/src/presenters/CityPresenter.d.ts +1 -1
  84. package/dist/src/presenters/ContinentPresenter.d.ts +1 -1
  85. package/dist/src/presenters/CountryPresenter.d.ts +1 -1
  86. package/dist/src/presenters/DegreePresenter.d.ts +1 -1
  87. package/dist/src/presenters/DisciplinePresenter.d.ts +1 -1
  88. package/dist/src/presenters/DurationPresenter.d.ts +1 -1
  89. package/dist/src/presenters/EducationalFormPresenter.d.ts +1 -1
  90. package/dist/src/presenters/FormatPresenter.d.ts +1 -1
  91. package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +1 -1
  92. package/dist/src/presenters/TuitionFeePresenter.d.ts +1 -1
  93. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +2 -2
  94. package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +1 -1
  95. package/dist/src/programmes/BaseProgrammeRule.d.ts +2 -2
  96. package/dist/src/programmes/IProgrammeRule.d.ts +2 -2
  97. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +3 -3
  98. package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +1 -1
  99. package/dist/src/programmes/SearchIndexabilityManager.d.ts +4 -4
  100. package/dist/src/programmes/SearchIndexabilityManager.js +8 -4
  101. package/dist/src/programmes/policies/Area.d.ts +3 -3
  102. package/dist/src/programmes/policies/Area.js +4 -4
  103. package/dist/src/programmes/policies/Attendance.d.ts +4 -4
  104. package/dist/src/programmes/policies/Attendance.js +5 -5
  105. package/dist/src/programmes/policies/AttendanceArea.d.ts +4 -4
  106. package/dist/src/programmes/policies/AttendanceArea.js +6 -6
  107. package/dist/src/programmes/policies/AttendanceContinent.d.ts +4 -4
  108. package/dist/src/programmes/policies/AttendanceContinent.js +6 -6
  109. package/dist/src/programmes/policies/AttendanceDegree.d.ts +2 -2
  110. package/dist/src/programmes/policies/AttendanceDegree.js +5 -5
  111. package/dist/src/programmes/policies/AttendanceDuration.d.ts +5 -5
  112. package/dist/src/programmes/policies/AttendanceDuration.js +7 -7
  113. package/dist/src/programmes/policies/AttendanceFormat.d.ts +4 -4
  114. package/dist/src/programmes/policies/AttendanceFormat.js +6 -6
  115. package/dist/src/programmes/policies/Continent.d.ts +3 -3
  116. package/dist/src/programmes/policies/Continent.js +4 -4
  117. package/dist/src/programmes/policies/ContinentDuration.d.ts +3 -3
  118. package/dist/src/programmes/policies/ContinentDuration.js +5 -5
  119. package/dist/src/programmes/policies/ContinentFormat.d.ts +3 -3
  120. package/dist/src/programmes/policies/ContinentFormat.js +5 -5
  121. package/dist/src/programmes/policies/ContinentSpecialProgrammes.d.ts +4 -4
  122. package/dist/src/programmes/policies/ContinentSpecialProgrammes.js +6 -6
  123. package/dist/src/programmes/policies/Country.d.ts +3 -3
  124. package/dist/src/programmes/policies/Country.js +4 -4
  125. package/dist/src/programmes/policies/CountryAttendance.d.ts +4 -4
  126. package/dist/src/programmes/policies/CountryAttendance.js +6 -6
  127. package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +4 -4
  128. package/dist/src/programmes/policies/CountryAttendanceDegree.js +7 -7
  129. package/dist/src/programmes/policies/CountryDegree.d.ts +2 -2
  130. package/dist/src/programmes/policies/CountryDegree.js +5 -5
  131. package/dist/src/programmes/policies/CountryDuration.d.ts +3 -3
  132. package/dist/src/programmes/policies/CountryDuration.js +5 -5
  133. package/dist/src/programmes/policies/CountryDurationDegree.d.ts +3 -3
  134. package/dist/src/programmes/policies/CountryDurationDegree.js +6 -6
  135. package/dist/src/programmes/policies/CountryEducationalForm.d.ts +2 -2
  136. package/dist/src/programmes/policies/CountryEducationalForm.js +5 -5
  137. package/dist/src/programmes/policies/CountryFormat.d.ts +3 -3
  138. package/dist/src/programmes/policies/CountryFormat.js +5 -5
  139. package/dist/src/programmes/policies/CountrySpecialProgrammes.d.ts +4 -4
  140. package/dist/src/programmes/policies/CountrySpecialProgrammes.js +6 -6
  141. package/dist/src/programmes/policies/Degree.d.ts +3 -3
  142. package/dist/src/programmes/policies/Degree.js +4 -4
  143. package/dist/src/programmes/policies/DegreeArea.d.ts +3 -3
  144. package/dist/src/programmes/policies/DegreeArea.js +5 -5
  145. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +4 -4
  146. package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +7 -7
  147. package/dist/src/programmes/policies/DegreeAttendanceFormat.d.ts +4 -4
  148. package/dist/src/programmes/policies/DegreeAttendanceFormat.js +7 -7
  149. package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.d.ts +4 -4
  150. package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.js +7 -7
  151. package/dist/src/programmes/policies/DegreeContinent.d.ts +2 -2
  152. package/dist/src/programmes/policies/DegreeContinent.js +5 -5
  153. package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +3 -3
  154. package/dist/src/programmes/policies/DegreeCountryAttendance.js +6 -6
  155. package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +3 -3
  156. package/dist/src/programmes/policies/DegreeCountryDiscipline.js +6 -6
  157. package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +3 -3
  158. package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +6 -6
  159. package/dist/src/programmes/policies/DegreeDuration.d.ts +2 -2
  160. package/dist/src/programmes/policies/DegreeDuration.js +5 -5
  161. package/dist/src/programmes/policies/DegreeFormat.d.ts +2 -2
  162. package/dist/src/programmes/policies/DegreeFormat.js +5 -5
  163. package/dist/src/programmes/policies/DegreeSpecialProgrammes.d.ts +3 -3
  164. package/dist/src/programmes/policies/DegreeSpecialProgrammes.js +5 -5
  165. package/dist/src/programmes/policies/DegreeTuitionFee.d.ts +3 -3
  166. package/dist/src/programmes/policies/DegreeTuitionFee.js +5 -5
  167. package/dist/src/programmes/policies/{DisciplineTuitionFee.d.ts → DegreeTuitionFeeArea.d.ts} +5 -5
  168. package/dist/src/programmes/policies/{DegreeAreaTuitionFee.js → DegreeTuitionFeeArea.js} +7 -7
  169. package/dist/src/programmes/policies/{DegreeAttendanceTuitionFee.d.ts → DegreeTuitionFeeAttendance.d.ts} +2 -2
  170. package/dist/src/programmes/policies/{DegreeAttendanceTuitionFee.js → DegreeTuitionFeeAttendance.js} +7 -7
  171. package/dist/src/programmes/policies/{DegreeContinentTuitionFee.d.ts → DegreeTuitionFeeContinent.d.ts} +2 -2
  172. package/dist/src/programmes/policies/{DegreeContinentTuitionFee.js → DegreeTuitionFeeContinent.js} +6 -6
  173. package/dist/src/programmes/policies/{DegreeFormatTuitionFee.d.ts → DegreeTuitionFeeFormat.d.ts} +3 -3
  174. package/dist/src/programmes/policies/{DegreeFormatTuitionFee.js → DegreeTuitionFeeFormat.js} +9 -9
  175. package/dist/src/programmes/policies/Discipline.d.ts +3 -3
  176. package/dist/src/programmes/policies/Discipline.js +4 -4
  177. package/dist/src/programmes/policies/DisciplineAttendance.d.ts +4 -4
  178. package/dist/src/programmes/policies/DisciplineAttendance.js +6 -6
  179. package/dist/src/programmes/policies/DisciplineContinent.d.ts +3 -3
  180. package/dist/src/programmes/policies/DisciplineContinent.js +5 -5
  181. package/dist/src/programmes/policies/DisciplineContinentAttendance.d.ts +4 -4
  182. package/dist/src/programmes/policies/DisciplineContinentAttendance.js +7 -7
  183. package/dist/src/programmes/policies/DisciplineCountry.d.ts +3 -3
  184. package/dist/src/programmes/policies/DisciplineCountry.js +5 -5
  185. package/dist/src/programmes/policies/DisciplineCountryAttendance.d.ts +4 -4
  186. package/dist/src/programmes/policies/DisciplineCountryAttendance.js +7 -7
  187. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +2 -2
  188. package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +6 -6
  189. package/dist/src/programmes/policies/DisciplineCountryFormat.d.ts +3 -3
  190. package/dist/src/programmes/policies/DisciplineCountryFormat.js +6 -6
  191. package/dist/src/programmes/policies/DisciplineDegree.d.ts +3 -3
  192. package/dist/src/programmes/policies/DisciplineDegree.js +5 -5
  193. package/dist/src/programmes/policies/DisciplineDuration.d.ts +3 -3
  194. package/dist/src/programmes/policies/DisciplineDuration.js +5 -5
  195. package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +2 -2
  196. package/dist/src/programmes/policies/DisciplineEducationalForm.js +5 -5
  197. package/dist/src/programmes/policies/DisciplineFormat.d.ts +3 -3
  198. package/dist/src/programmes/policies/DisciplineFormat.js +5 -5
  199. package/dist/src/programmes/policies/DisciplineSpecialProgrammes.d.ts +3 -3
  200. package/dist/src/programmes/policies/DisciplineSpecialProgrammes.js +5 -5
  201. package/dist/src/programmes/policies/Duration.d.ts +3 -3
  202. package/dist/src/programmes/policies/Duration.js +4 -4
  203. package/dist/src/programmes/policies/Format.d.ts +3 -3
  204. package/dist/src/programmes/policies/Format.js +4 -4
  205. package/dist/src/programmes/policies/SpecialProgrammes.d.ts +3 -3
  206. package/dist/src/programmes/policies/SpecialProgrammes.js +4 -4
  207. package/dist/src/programmes/policies/TuitionFee.d.ts +3 -3
  208. package/dist/src/programmes/policies/TuitionFee.js +4 -4
  209. package/dist/src/programmes/policies/TuitionFeeAttendance.d.ts +4 -4
  210. package/dist/src/programmes/policies/TuitionFeeAttendance.js +6 -6
  211. package/dist/src/programmes/policies/TuitionFeeAttendanceDiscipline.d.ts +4 -4
  212. package/dist/src/programmes/policies/TuitionFeeAttendanceDiscipline.js +7 -7
  213. package/dist/src/programmes/policies/TuitionFeeContinent.d.ts +3 -3
  214. package/dist/src/programmes/policies/TuitionFeeContinent.js +5 -5
  215. package/dist/src/programmes/policies/TuitionFeeCountry.d.ts +3 -3
  216. package/dist/src/programmes/policies/TuitionFeeCountry.js +5 -5
  217. package/dist/src/programmes/policies/TuitionFeeDiscipline.d.ts +3 -3
  218. package/dist/src/programmes/policies/TuitionFeeDiscipline.js +5 -5
  219. package/dist/src/programmes/policies/Unfiltered.d.ts +2 -2
  220. package/dist/src/programmes/policies/Unfiltered.js +2 -2
  221. package/dist/src/programmes/policies/index.d.ts +4 -5
  222. package/dist/src/programmes/policies/index.js +4 -5
  223. package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.d.ts +2 -2
  224. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +2 -2
  225. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +2 -2
  226. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +2 -2
  227. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +2 -2
  228. package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +2 -2
  229. package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +2 -2
  230. package/dist/src/programmes/rules/IndexableDegreeRule.js +1 -1
  231. package/dist/src/programmes/rules/IndexableDurationRule.d.ts +2 -2
  232. package/dist/src/programmes/rules/IndexableDurationRule.js +1 -1
  233. package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +2 -2
  234. package/dist/src/programmes/rules/IndexableEducationalFormRule.js +1 -1
  235. package/dist/src/programmes/rules/IndexablePageNumberRule.js +1 -1
  236. package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +2 -2
  237. package/dist/src/programmes/rules/MinimumAmountOfResultsRule.d.ts +3 -3
  238. package/dist/src/programmes/rules/MinimumAmountOfResultsRule.js +1 -1
  239. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +1 -1
  240. package/dist/src/programmes/rules/OneYearOnlyRule.d.ts +2 -2
  241. package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +1 -1
  242. package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +1 -1
  243. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +1 -1
  244. package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +2 -2
  245. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +1 -1
  246. package/dist/src/scholarships/SearchIndexabilityManager.d.ts +5 -5
  247. package/dist/src/scholarships/SearchIndexabilityManager.js +1 -1
  248. package/dist/src/scholarships/policies/Area.d.ts +3 -3
  249. package/dist/src/scholarships/policies/Area.js +4 -4
  250. package/dist/src/scholarships/policies/Country.d.ts +3 -3
  251. package/dist/src/scholarships/policies/Country.js +4 -4
  252. package/dist/src/scholarships/policies/Discipline.d.ts +4 -4
  253. package/dist/src/scholarships/policies/Discipline.js +5 -5
  254. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +3 -3
  255. package/dist/src/scholarships/policies/DisciplineCountry.js +5 -5
  256. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +2 -2
  257. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +2 -2
  258. package/dist/src/scholarships/policies/Unfiltered.d.ts +2 -2
  259. package/dist/src/scholarships/policies/Unfiltered.js +2 -2
  260. package/dist/src/scholarships/policies/UniversityCountry.d.ts +3 -3
  261. package/dist/src/scholarships/policies/UniversityCountry.js +4 -4
  262. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +3 -3
  263. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +1 -1
  264. package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +3 -3
  265. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +3 -3
  266. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +3 -3
  267. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +3 -3
  268. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +1 -1
  269. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +2 -2
  270. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +3 -3
  271. package/dist/src/sitemap-generator/IRankingApiClient.d.ts +1 -1
  272. package/dist/src/sitemap-generator/ISearchApiClient.d.ts +1 -1
  273. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +3 -3
  274. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +4 -4
  275. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +8 -8
  276. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +3 -3
  277. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +15 -15
  278. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +3 -3
  279. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +7 -7
  280. package/dist/src/structured-data/OrganisationStructuredDataFactory.d.ts +1 -1
  281. package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +1 -1
  282. package/dist/tests/common/rules/NoFiltersSelectedRule.test.d.mts +1 -0
  283. package/dist/tests/common/rules/NoFiltersSelectedRule.test.mjs +40 -0
  284. package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.d.mts +1 -0
  285. package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.mjs +70 -0
  286. package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.d.mts +1 -0
  287. package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.mjs +54 -0
  288. package/dist/tests/organisations/policies/our-picks/Area.test.d.mts +1 -0
  289. package/dist/tests/organisations/policies/our-picks/Area.test.mjs +125 -0
  290. package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.d.mts +1 -0
  291. package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.mjs +238 -0
  292. package/dist/tests/organisations/policies/our-picks/Attendance.test.d.mts +1 -0
  293. package/dist/tests/organisations/policies/our-picks/Attendance.test.mjs +119 -0
  294. package/dist/tests/organisations/policies/our-picks/Continent.test.d.mts +1 -0
  295. package/dist/tests/organisations/policies/our-picks/Continent.test.mjs +105 -0
  296. package/dist/tests/organisations/policies/our-picks/Country.test.d.mts +1 -0
  297. package/dist/tests/organisations/policies/our-picks/Country.test.mjs +109 -0
  298. package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.d.mts +1 -0
  299. package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.mjs +152 -0
  300. package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.d.mts +1 -0
  301. package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.mjs +223 -0
  302. package/dist/tests/organisations/policies/our-picks/CountryCity.test.d.mts +1 -0
  303. package/dist/tests/organisations/policies/our-picks/CountryCity.test.mjs +109 -0
  304. package/dist/tests/organisations/policies/our-picks/Unfiltered.test.d.mts +1 -0
  305. package/dist/tests/organisations/policies/our-picks/Unfiltered.test.mjs +60 -0
  306. package/dist/tests/organisations/policies/ranked/RankedArea.test.d.mts +1 -0
  307. package/dist/tests/organisations/policies/ranked/RankedArea.test.mjs +149 -0
  308. package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.d.mts +1 -0
  309. package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.mjs +237 -0
  310. package/dist/tests/organisations/policies/ranked/RankedAttendance.test.d.mts +1 -0
  311. package/dist/tests/organisations/policies/ranked/RankedAttendance.test.mjs +139 -0
  312. package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.d.mts +1 -0
  313. package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.mjs +224 -0
  314. package/dist/tests/organisations/policies/ranked/RankedContinent.test.d.mts +1 -0
  315. package/dist/tests/organisations/policies/ranked/RankedContinent.test.mjs +125 -0
  316. package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.d.mts +1 -0
  317. package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.mjs +253 -0
  318. package/dist/tests/organisations/policies/ranked/RankedCountry.test.d.mts +1 -0
  319. package/dist/tests/organisations/policies/ranked/RankedCountry.test.mjs +131 -0
  320. package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.d.mts +1 -0
  321. package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.mjs +230 -0
  322. package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.d.mts +1 -0
  323. package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.mjs +197 -0
  324. package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.d.mts +1 -0
  325. package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.mjs +124 -0
  326. package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.d.mts +1 -0
  327. package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.mjs +75 -0
  328. package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.d.mts +1 -0
  329. package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.mjs +59 -0
  330. package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.d.mts +1 -0
  331. package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.mjs +77 -0
  332. package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.d.mts +1 -0
  333. package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.mjs +77 -0
  334. package/dist/tests/organisations/rules/OnlineAttendanceRule.test.d.mts +1 -0
  335. package/dist/tests/organisations/rules/OnlineAttendanceRule.test.mjs +59 -0
  336. package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.d.mts +1 -0
  337. package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.mjs +59 -0
  338. package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.d.mts +1 -0
  339. package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.mjs +59 -0
  340. package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.d.mts +1 -0
  341. package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.mjs +59 -0
  342. package/dist/tests/organisations/utils/SearchDependencies.util.d.mts +20 -0
  343. package/dist/tests/organisations/utils/SearchDependencies.util.mjs +88 -0
  344. package/dist/tests/organisations/utils/SitemapDependencies.util.d.mts +18 -0
  345. package/dist/tests/organisations/utils/SitemapDependencies.util.mjs +54 -0
  346. package/dist/tests/presenters/AreaPresenter.test.d.mts +1 -0
  347. package/dist/tests/presenters/AreaPresenter.test.mjs +46 -0
  348. package/dist/tests/presenters/AttendancePresenter.test.d.mts +1 -0
  349. package/dist/tests/presenters/AttendancePresenter.test.mjs +41 -0
  350. package/dist/tests/presenters/ContinentPresenter.test.d.mts +1 -0
  351. package/dist/tests/presenters/ContinentPresenter.test.mjs +44 -0
  352. package/dist/tests/presenters/CountryPresenter.test.d.mts +1 -0
  353. package/dist/tests/presenters/CountryPresenter.test.mjs +50 -0
  354. package/dist/tests/presenters/DegreePresenter.test.d.mts +1 -0
  355. package/dist/tests/presenters/DegreePresenter.test.mjs +51 -0
  356. package/dist/tests/presenters/DisciplinePresenter.test.d.mts +1 -0
  357. package/dist/tests/presenters/DisciplinePresenter.test.mjs +40 -0
  358. package/dist/tests/presenters/DurationPresenter.test.d.mts +1 -0
  359. package/dist/tests/presenters/DurationPresenter.test.mjs +64 -0
  360. package/dist/tests/presenters/EducationalFormPresenter.test.d.mts +1 -0
  361. package/dist/tests/presenters/EducationalFormPresenter.test.mjs +60 -0
  362. package/dist/tests/presenters/FormatPresenter.test.d.mts +1 -0
  363. package/dist/tests/presenters/FormatPresenter.test.mjs +43 -0
  364. package/dist/tests/presenters/SpecialProgrammesPresenter.test.d.mts +1 -0
  365. package/dist/tests/presenters/SpecialProgrammesPresenter.test.mjs +66 -0
  366. package/dist/tests/presenters/TuitionFeePresenter.test.d.mts +1 -0
  367. package/dist/tests/presenters/TuitionFeePresenter.test.mjs +52 -0
  368. package/dist/tests/programmes/policies/Area.test.d.mts +1 -0
  369. package/dist/tests/programmes/policies/Area.test.mjs +153 -0
  370. package/dist/tests/programmes/policies/Attendance.test.d.mts +1 -0
  371. package/dist/tests/programmes/policies/Attendance.test.mjs +173 -0
  372. package/dist/tests/programmes/policies/AttendanceDegree.test.d.mts +1 -0
  373. package/dist/tests/programmes/policies/AttendanceDegree.test.mjs +291 -0
  374. package/dist/tests/programmes/policies/Continent.test.d.mts +1 -0
  375. package/dist/tests/programmes/policies/Continent.test.mjs +169 -0
  376. package/dist/tests/programmes/policies/Country.test.d.mts +1 -0
  377. package/dist/tests/programmes/policies/Country.test.mjs +164 -0
  378. package/dist/tests/programmes/policies/CountryAttendance.test.d.mts +1 -0
  379. package/dist/tests/programmes/policies/CountryAttendance.test.mjs +251 -0
  380. package/dist/tests/programmes/policies/CountryAttendanceDegree.test.d.mts +1 -0
  381. package/dist/tests/programmes/policies/CountryAttendanceDegree.test.mjs +337 -0
  382. package/dist/tests/programmes/policies/CountryDegree.test.d.mts +1 -0
  383. package/dist/tests/programmes/policies/CountryDegree.test.mjs +262 -0
  384. package/dist/tests/programmes/policies/CountryDuration.test.d.mts +1 -0
  385. package/dist/tests/programmes/policies/CountryDuration.test.mjs +234 -0
  386. package/dist/tests/programmes/policies/CountryDurationDegree.test.d.mts +1 -0
  387. package/dist/tests/programmes/policies/CountryDurationDegree.test.mjs +304 -0
  388. package/dist/tests/programmes/policies/CountryEducationalForm.test.d.mts +1 -0
  389. package/dist/tests/programmes/policies/CountryEducationalForm.test.mjs +260 -0
  390. package/dist/tests/programmes/policies/CountryFormat.test.d.mts +1 -0
  391. package/dist/tests/programmes/policies/CountryFormat.test.mjs +253 -0
  392. package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.d.mts +1 -0
  393. package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.mjs +179 -0
  394. package/dist/tests/programmes/policies/DegreeCountryAttendance.test.d.mts +1 -0
  395. package/dist/tests/programmes/policies/DegreeCountryAttendance.test.mjs +267 -0
  396. package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.d.mts +1 -0
  397. package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.mjs +217 -0
  398. package/dist/tests/programmes/policies/DegreeFormat.test.d.mts +1 -0
  399. package/dist/tests/programmes/policies/DegreeFormat.test.mjs +221 -0
  400. package/dist/tests/programmes/policies/Discipline.test.d.mts +1 -0
  401. package/dist/tests/programmes/policies/Discipline.test.mjs +159 -0
  402. package/dist/tests/programmes/policies/DisciplineAttendance.test.d.mts +1 -0
  403. package/dist/tests/programmes/policies/DisciplineAttendance.test.mjs +292 -0
  404. package/dist/tests/programmes/policies/DisciplineContinent.test.d.mts +1 -0
  405. package/dist/tests/programmes/policies/DisciplineContinent.test.mjs +253 -0
  406. package/dist/tests/programmes/policies/DisciplineCountry.test.d.mts +1 -0
  407. package/dist/tests/programmes/policies/DisciplineCountry.test.mjs +244 -0
  408. package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.d.mts +1 -0
  409. package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.mjs +345 -0
  410. package/dist/tests/programmes/policies/DisciplineDegree.test.d.mts +1 -0
  411. package/dist/tests/programmes/policies/DisciplineDegree.test.mjs +273 -0
  412. package/dist/tests/programmes/policies/DisciplineDuration.test.d.mts +1 -0
  413. package/dist/tests/programmes/policies/DisciplineDuration.test.mjs +278 -0
  414. package/dist/tests/programmes/policies/DisciplineEducationalForm.test.d.mts +1 -0
  415. package/dist/tests/programmes/policies/DisciplineEducationalForm.test.mjs +302 -0
  416. package/dist/tests/programmes/policies/DisciplineFormat.test.d.mts +1 -0
  417. package/dist/tests/programmes/policies/DisciplineFormat.test.mjs +266 -0
  418. package/dist/tests/programmes/policies/Duration.test.d.mts +1 -0
  419. package/dist/tests/programmes/policies/Duration.test.mjs +179 -0
  420. package/dist/tests/programmes/policies/Format.test.d.mts +1 -0
  421. package/dist/tests/programmes/policies/Format.test.mjs +117 -0
  422. package/dist/tests/programmes/policies/NewRulesValidation.test.d.mts +1 -0
  423. package/dist/tests/programmes/policies/NewRulesValidation.test.mjs +320 -0
  424. package/dist/tests/programmes/policies/SpecialProgrammes.test.d.mts +1 -0
  425. package/dist/tests/programmes/policies/SpecialProgrammes.test.mjs +171 -0
  426. package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.d.mts +1 -0
  427. package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.mjs +360 -0
  428. package/dist/tests/programmes/policies/TuitionFeeContinent.test.d.mts +1 -0
  429. package/dist/tests/programmes/policies/TuitionFeeContinent.test.mjs +293 -0
  430. package/dist/tests/programmes/policies/TuitionFeeCountry.test.d.mts +1 -0
  431. package/dist/tests/programmes/policies/TuitionFeeCountry.test.mjs +266 -0
  432. package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.d.mts +1 -0
  433. package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.mjs +267 -0
  434. package/dist/tests/programmes/policies/Unfiltered.test.d.mts +1 -0
  435. package/dist/tests/programmes/policies/Unfiltered.test.mjs +90 -0
  436. package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.d.mts +1 -0
  437. package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.mjs +27 -0
  438. package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.d.mts +1 -0
  439. package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.mjs +121 -0
  440. package/dist/tests/programmes/rules/DegreeDisciplineRule.test.d.mts +1 -0
  441. package/dist/tests/programmes/rules/DegreeDisciplineRule.test.mjs +169 -0
  442. package/dist/tests/programmes/rules/IndexableDegreeRule.test.d.mts +1 -0
  443. package/dist/tests/programmes/rules/IndexableDegreeRule.test.mjs +101 -0
  444. package/dist/tests/programmes/rules/IndexableDurationRule.test..d.mts +1 -0
  445. package/dist/tests/programmes/rules/IndexableDurationRule.test..mjs +25 -0
  446. package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.d.mts +1 -0
  447. package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.mjs +27 -0
  448. package/dist/tests/programmes/rules/IndexablePageNumberRule.test.d.mts +1 -0
  449. package/dist/tests/programmes/rules/IndexablePageNumberRule.test.mjs +51 -0
  450. package/dist/tests/programmes/rules/MbaDegreeRule.test.d.mts +1 -0
  451. package/dist/tests/programmes/rules/MbaDegreeRule.test.mjs +55 -0
  452. package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.d.mts +1 -0
  453. package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.mjs +53 -0
  454. package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.d.mts +1 -0
  455. package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.mjs +79 -0
  456. package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.d.mts +1 -0
  457. package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.mjs +57 -0
  458. package/dist/tests/programmes/rules/OneYearDurationRule.test..d.mts +1 -0
  459. package/dist/tests/programmes/rules/OneYearDurationRule.test..mjs +40 -0
  460. package/dist/tests/programmes/rules/OnlineAttendanceRule.test.d.mts +1 -0
  461. package/dist/tests/programmes/rules/OnlineAttendanceRule.test.mjs +69 -0
  462. package/dist/tests/programmes/rules/PartTimeFormatRule.test.d.mts +1 -0
  463. package/dist/tests/programmes/rules/PartTimeFormatRule.test.mjs +27 -0
  464. package/dist/tests/programmes/utils/SearchDependencies.util.d.mts +16 -0
  465. package/dist/tests/programmes/utils/SearchDependencies.util.mjs +73 -0
  466. package/dist/tests/programmes/utils/SitemapDependencies.util.d.mts +15 -0
  467. package/dist/tests/programmes/utils/SitemapDependencies.util.mjs +49 -0
  468. package/dist/tests/scholarships/policies/Area.test.d.mts +1 -0
  469. package/dist/tests/scholarships/policies/Area.test.mjs +121 -0
  470. package/dist/tests/scholarships/policies/Country.test.d.mts +1 -0
  471. package/dist/tests/scholarships/policies/Country.test.mjs +97 -0
  472. package/dist/tests/scholarships/policies/Discipline.test.d.mts +1 -0
  473. package/dist/tests/scholarships/policies/Discipline.test.mjs +93 -0
  474. package/dist/tests/scholarships/policies/DisciplineCountry.test.d.mts +1 -0
  475. package/dist/tests/scholarships/policies/DisciplineCountry.test.mjs +151 -0
  476. package/dist/tests/scholarships/policies/Unfiltered.test.d.mts +1 -0
  477. package/dist/tests/scholarships/policies/Unfiltered.test.mjs +44 -0
  478. package/dist/tests/scholarships/policies/UniversityCountry.test.d.mts +1 -0
  479. package/dist/tests/scholarships/policies/UniversityCountry.test.mjs +115 -0
  480. package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.d.mts +1 -0
  481. package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.mjs +64 -0
  482. package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.d.mts +1 -0
  483. package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.mjs +62 -0
  484. package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.d.mts +1 -0
  485. package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.mjs +114 -0
  486. package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.d.mts +1 -0
  487. package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.mjs +62 -0
  488. package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.d.mts +1 -0
  489. package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.mjs +62 -0
  490. package/dist/tests/scholarships/utils/SearchDependencies.util.d.mts +16 -0
  491. package/dist/tests/scholarships/utils/SearchDependencies.util.mjs +70 -0
  492. package/dist/tests/scholarships/utils/SitemapDependencies.util.d.mts +11 -0
  493. package/dist/tests/scholarships/utils/SitemapDependencies.util.mjs +33 -0
  494. package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.d.mts +1 -0
  495. package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.mjs +82 -0
  496. package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.d.mts +1 -0
  497. package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.mjs +85 -0
  498. package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.d.mts +1 -0
  499. package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.mjs +77 -0
  500. package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.d.mts +1 -0
  501. package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.mjs +60 -0
  502. package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.d.mts +1 -0
  503. package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.mjs +334 -0
  504. package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.d.mts +1 -0
  505. package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.mjs +562 -0
  506. package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.d.mts +1 -0
  507. package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.mjs +292 -0
  508. package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.d.mts +1 -0
  509. package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.mjs +258 -0
  510. package/package.json +1 -1
  511. package/dist/src/programmes/policies/AttendanceTuitionFee.d.ts +0 -17
  512. package/dist/src/programmes/policies/AttendanceTuitionFee.js +0 -51
  513. package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +0 -16
  514. package/dist/src/programmes/policies/ContinentTuitionFee.js +0 -46
  515. package/dist/src/programmes/policies/CountryTuitionFee.d.ts +0 -16
  516. package/dist/src/programmes/policies/CountryTuitionFee.js +0 -46
  517. package/dist/src/programmes/policies/DegreeAreaTuitionFee.d.ts +0 -16
  518. package/dist/src/programmes/policies/DisciplineTuitionFee.js +0 -46
  519. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +0 -17
  520. package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +0 -54
@@ -0,0 +1,292 @@
1
+ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
2
+ import { FilterKey } from '@studyportals/search-filters/server-side';
3
+ import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
4
+ import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
5
+ import { DisciplineAttendance } from '@/programmes/policies/DisciplineAttendance';
6
+ import { PortalType } from '@studyportals/domain-client';
7
+ import { DisciplinePresenter } from '@/presenters/DisciplinePresenter';
8
+ import { AttendancePresenter } from '@/presenters/AttendancePresenter';
9
+ // Mock the presenters at the module level
10
+ vi.mock('@/presenters/DisciplinePresenter', () => {
11
+ return {
12
+ DisciplinePresenter: {
13
+ getInstance: vi.fn().mockReturnValue({
14
+ getFragments: vi.fn().mockReturnValue([
15
+ { id: '54', path: 'agriculture-forestry' },
16
+ { id: '12', path: 'applied-sciences' },
17
+ { id: '356', path: 'computer-science' }
18
+ ])
19
+ })
20
+ }
21
+ };
22
+ });
23
+ vi.mock('@/presenters/AttendancePresenter', () => {
24
+ return {
25
+ AttendancePresenter: {
26
+ getInstance: vi.fn().mockReturnValue({
27
+ getFragments: vi.fn().mockReturnValue([
28
+ { id: 'online', path: 'online' },
29
+ { id: 'face2face', path: 'on-campus' }
30
+ ])
31
+ })
32
+ }
33
+ };
34
+ });
35
+ describe('Policy:DisciplineAttendance', () => {
36
+ describe('shouldIndex', () => {
37
+ let searchDependenciesHelper;
38
+ let disciplineAttendancePolicy;
39
+ beforeEach(() => {
40
+ searchDependenciesHelper = new SearchDependencies();
41
+ disciplineAttendancePolicy = new DisciplineAttendance(searchDependenciesHelper.dependencies);
42
+ searchDependenciesHelper.setResultsCount(10);
43
+ searchDependenciesHelper.setPageNumber(1);
44
+ searchDependenciesHelper.setPortalType(PortalType.MASTER);
45
+ });
46
+ it('Should return true when all conditions are met', async () => {
47
+ const disciplineId = '54'; // Agriculture & Forestry
48
+ const attendance = 'online';
49
+ searchDependenciesHelper.setFilterKeyValues(new Map([
50
+ [FilterKey.DISCIPLINES, [disciplineId]],
51
+ [FilterKey.DELIVERY_METHOD, [attendance]]
52
+ ]));
53
+ const result = await disciplineAttendancePolicy.shouldIndex();
54
+ expect(result).toBe(true);
55
+ });
56
+ it('Should return false when multiple disciplines are selected', async () => {
57
+ const firstDisciplineId = '54'; // Agriculture & Forestry
58
+ const secondDisciplineId = '12'; // Applied Sciences & Professions
59
+ const attendance = 'online';
60
+ searchDependenciesHelper.setFilterKeyValues(new Map([
61
+ [FilterKey.DISCIPLINES, [firstDisciplineId, secondDisciplineId]],
62
+ [FilterKey.DELIVERY_METHOD, [attendance]]
63
+ ]));
64
+ const result = await disciplineAttendancePolicy.shouldIndex();
65
+ expect(result).toBe(false);
66
+ });
67
+ it('Should return false when multiple attendance values are selected', async () => {
68
+ const disciplineId = '54'; // Agriculture & Forestry
69
+ const firstAttendance = 'online';
70
+ const secondAttendance = 'face2face';
71
+ searchDependenciesHelper.setFilterKeyValues(new Map([
72
+ [FilterKey.DISCIPLINES, [disciplineId]],
73
+ [FilterKey.DELIVERY_METHOD, [firstAttendance, secondAttendance]]
74
+ ]));
75
+ const result = await disciplineAttendancePolicy.shouldIndex();
76
+ expect(result).toBe(false);
77
+ });
78
+ it('Should return false when no disciplines are selected', async () => {
79
+ const attendance = 'online';
80
+ searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DELIVERY_METHOD, [attendance]]]));
81
+ const result = await disciplineAttendancePolicy.shouldIndex();
82
+ expect(result).toBe(false);
83
+ });
84
+ it('Should return false when no attendance value is selected', async () => {
85
+ const disciplineId = '54'; // Agriculture & Forestry
86
+ searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DISCIPLINES, [disciplineId]]]));
87
+ const result = await disciplineAttendancePolicy.shouldIndex();
88
+ expect(result).toBe(false);
89
+ });
90
+ it('Should return false when other filters are selected', async () => {
91
+ const disciplineId = '54'; // Agriculture & Forestry
92
+ const attendance = 'online';
93
+ const countryId = '30'; // UK
94
+ searchDependenciesHelper.setFilterKeyValues(new Map([
95
+ [FilterKey.DISCIPLINES, [disciplineId]],
96
+ [FilterKey.DELIVERY_METHOD, [attendance]],
97
+ [FilterKey.COUNTRY, [countryId]]
98
+ ]));
99
+ const result = await disciplineAttendancePolicy.shouldIndex();
100
+ expect(result).toBe(false);
101
+ });
102
+ it('Should return false attendance is not online', async () => {
103
+ const disciplineId = '54'; // Agriculture & Forestry
104
+ const attendance = 'face2face';
105
+ searchDependenciesHelper.setFilterKeyValues(new Map([
106
+ [FilterKey.DISCIPLINES, [disciplineId]],
107
+ [FilterKey.DELIVERY_METHOD, [attendance]]
108
+ ]));
109
+ const result = await disciplineAttendancePolicy.shouldIndex();
110
+ expect(result).toBe(false);
111
+ });
112
+ it('Should return false when number of results is less than 7', async () => {
113
+ const disciplineId = '54'; // Agriculture & Forestry
114
+ const attendance = 'online';
115
+ searchDependenciesHelper.setResultsCount(2);
116
+ searchDependenciesHelper.setFilterKeyValues(new Map([
117
+ [FilterKey.DISCIPLINES, [disciplineId]],
118
+ [FilterKey.DELIVERY_METHOD, [attendance]]
119
+ ]));
120
+ const result = await disciplineAttendancePolicy.shouldIndex();
121
+ expect(result).toBe(false);
122
+ });
123
+ it('Should return false when page number is higher than 2', async () => {
124
+ const disciplineId = '54'; // Agriculture & Forestry
125
+ const attendance = 'online';
126
+ searchDependenciesHelper.setPageNumber(4);
127
+ searchDependenciesHelper.setFilterKeyValues(new Map([
128
+ [FilterKey.DISCIPLINES, [disciplineId]],
129
+ [FilterKey.DELIVERY_METHOD, [attendance]]
130
+ ]));
131
+ const result = await disciplineAttendancePolicy.shouldIndex();
132
+ expect(result).toBe(false);
133
+ });
134
+ it('Should return false when portal is distance learning', async () => {
135
+ const disciplineId = '54'; // Agriculture & Forestry
136
+ const attendance = 'online';
137
+ searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
138
+ searchDependenciesHelper.setFilterKeyValues(new Map([
139
+ [FilterKey.DISCIPLINES, [disciplineId]],
140
+ [FilterKey.DELIVERY_METHOD, [attendance]]
141
+ ]));
142
+ const result = await disciplineAttendancePolicy.shouldIndex();
143
+ expect(result).toBe(false);
144
+ });
145
+ });
146
+ describe('generateUrls', () => {
147
+ let sitemapDependenciesHelper;
148
+ let disciplineAttendancePolicy;
149
+ beforeEach(() => {
150
+ sitemapDependenciesHelper = new SitemapDependencies();
151
+ sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
152
+ disciplineAttendancePolicy = new DisciplineAttendance(sitemapDependenciesHelper.dependencies);
153
+ DisciplinePresenter.getInstance = vi.fn().mockReturnValue({
154
+ getFragments: vi.fn().mockReturnValue([
155
+ { id: '54', path: 'agriculture-forestry' },
156
+ { id: '12', path: 'applied-sciences' },
157
+ { id: '356', path: 'computer-science' }
158
+ ])
159
+ });
160
+ AttendancePresenter.getInstance = vi.fn().mockReturnValue({
161
+ getFragments: vi.fn().mockReturnValue([
162
+ { id: 'online', path: 'online' },
163
+ { id: 'face2face', path: 'on-campus' }
164
+ ])
165
+ });
166
+ });
167
+ afterEach(() => {
168
+ sitemapDependenciesHelper.resetMocks();
169
+ });
170
+ it('Should generate URLs for valid discipline-attendance combinations with online attendance', async () => {
171
+ // Mock the checkRulesForSitemap to filter out non-online attendance options
172
+ const resultMap = new Map();
173
+ // Set up all combinations
174
+ for (const discipline of ['54', '12', '356']) {
175
+ for (const attendance of ['online', 'face2face']) {
176
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
177
+ // Only allow online attendance to pass (due to OnlineAttendanceRule)
178
+ resultMap.set(key, attendance === 'online');
179
+ }
180
+ }
181
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
182
+ // Call the method via reflection since it's protected
183
+ const urls = await disciplineAttendancePolicy.generateUrls();
184
+ // Calculate expected URLs: 3 disciplines * 1 attendance (online) * 2 pages = 6 URLs
185
+ expect(urls).toHaveLength(3);
186
+ // Verify valid combinations with proper path format
187
+ expect(urls).toContain('online/agriculture-forestry');
188
+ expect(urls).toContain('online/applied-sciences');
189
+ expect(urls).toContain('online/computer-science');
190
+ // Verify on-campus combinations are excluded
191
+ expect(urls).not.toContain('on-campus/agriculture-forestry');
192
+ expect(urls).not.toContain('on-campus/applied-sciences');
193
+ expect(urls).not.toContain('on-campus/computer-science');
194
+ });
195
+ it('Should exclude specific discipline combinations based on rules', async () => {
196
+ // Create a map that returns false for computer science
197
+ const resultMap = new Map();
198
+ // Set up all possible combinations
199
+ for (const discipline of ['54', '12', '356']) {
200
+ for (const attendance of ['online', 'face2face']) {
201
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
202
+ // Only allow agriculture and applied sciences with online attendance
203
+ resultMap.set(key, discipline !== '356' && attendance === 'online');
204
+ }
205
+ }
206
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
207
+ const urls = await disciplineAttendancePolicy.generateUrls();
208
+ // Calculate expected URLs: 2 disciplines * 1 attendance (online) * 2 pages = 4 URLs
209
+ expect(urls).toHaveLength(2);
210
+ // Verify included disciplines
211
+ expect(urls).toContain('online/agriculture-forestry');
212
+ expect(urls).toContain('online/applied-sciences');
213
+ // Verify excluded disciplines
214
+ expect(urls).not.toContain('online/computer-science');
215
+ expect(urls).not.toContain('on-campus/agriculture-forestry');
216
+ expect(urls).not.toContain('on-campus/applied-sciences');
217
+ expect(urls).not.toContain('on-campus/computer-science');
218
+ });
219
+ it('Should exclude all URLs when all rule checks fail', async () => {
220
+ // Create a map that returns false for all combinations
221
+ const resultMap = new Map();
222
+ for (const discipline of ['54', '12', '356']) {
223
+ for (const attendance of ['online', 'face2face']) {
224
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.DELIVERY_METHOD}:${attendance}`;
225
+ resultMap.set(key, false);
226
+ }
227
+ }
228
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
229
+ const urls = await disciplineAttendancePolicy.generateUrls();
230
+ // Should include no URLs
231
+ expect(urls).toHaveLength(0);
232
+ });
233
+ it('Should handle empty discipline fragments', async () => {
234
+ // Mock the DisciplinePresenter to return empty fragments
235
+ DisciplinePresenter.getInstance.mockReturnValueOnce({
236
+ getFragments: vi.fn().mockReturnValue([])
237
+ });
238
+ sitemapDependenciesHelper.mockCheckRulesForSitemap();
239
+ const urls = await disciplineAttendancePolicy.generateUrls();
240
+ // Should return empty array
241
+ expect(urls).toHaveLength(0);
242
+ });
243
+ it('Should handle empty attendance fragments', async () => {
244
+ // Mock the AttendancePresenter to return empty fragments
245
+ AttendancePresenter.getInstance.mockReturnValueOnce({
246
+ getFragments: vi.fn().mockReturnValue([])
247
+ });
248
+ sitemapDependenciesHelper.mockCheckRulesForSitemap();
249
+ const urls = await disciplineAttendancePolicy.generateUrls();
250
+ // Should return empty array
251
+ expect(urls).toHaveLength(0);
252
+ });
253
+ it('Should handle performance with large number of discipline combinations', async () => {
254
+ // Generate larger dataset for testing
255
+ const largeDisciplineSet = Array.from({ length: 30 }, (_, index) => ({
256
+ id: `discipline-${index}`,
257
+ path: `discipline-path-${index}`
258
+ }));
259
+ const largeAttendanceSet = Array.from({ length: 2 }, (_, index) => ({
260
+ id: index === 0 ? 'online' : 'face2face',
261
+ path: index === 0 ? 'online' : 'on-campus'
262
+ }));
263
+ // Override mocks with large datasets
264
+ DisciplinePresenter.getInstance.mockReturnValueOnce({
265
+ getFragments: vi.fn().mockReturnValue(largeDisciplineSet)
266
+ });
267
+ AttendancePresenter.getInstance.mockReturnValueOnce({
268
+ getFragments: vi.fn().mockReturnValue(largeAttendanceSet)
269
+ });
270
+ // Mock to allow only combinations where discipline index is even and attendance is online
271
+ const resultMap = new Map();
272
+ for (let d = 0; d < largeDisciplineSet.length; d++) {
273
+ for (let a = 0; a < largeAttendanceSet.length; a++) {
274
+ const disciplineId = largeDisciplineSet[d].id;
275
+ const attendanceId = largeAttendanceSet[a].id;
276
+ const key = `${FilterKey.DISCIPLINES}:${disciplineId}|${FilterKey.DELIVERY_METHOD}:${attendanceId}`;
277
+ resultMap.set(key, d % 2 === 0 && attendanceId === 'online');
278
+ }
279
+ }
280
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
281
+ const urls = await disciplineAttendancePolicy.generateUrls();
282
+ // Calculate expected count: 15 disciplines (even indices) * 1 attendance (online) * 2 pages
283
+ // = 15 * 1 * 2 = 30 URLs
284
+ expect(urls).toHaveLength(15);
285
+ // Test specific items
286
+ expect(urls).toContain('online/discipline-path-0');
287
+ expect(urls).toContain('online/discipline-path-2');
288
+ expect(urls).not.toContain('online/discipline-path-1'); // Odd discipline index
289
+ expect(urls).not.toContain('on-campus/discipline-path-0'); // Face-to-face attendance
290
+ });
291
+ });
292
+ });
@@ -0,0 +1,253 @@
1
+ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
2
+ import { FilterKey } from '@studyportals/search-filters/server-side';
3
+ import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
4
+ import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
5
+ import { DisciplineContinent } from '@/programmes/policies/DisciplineContinent';
6
+ import { PortalType } from '@studyportals/domain-client';
7
+ import { DisciplinePresenter } from '@/presenters/DisciplinePresenter';
8
+ import { ContinentPresenter } from '@/presenters/ContinentPresenter';
9
+ describe('Policy:DisciplineContinent', () => {
10
+ describe('shouldIndex', () => {
11
+ let searchDependenciesHelper;
12
+ let disciplineContinentPolicy;
13
+ beforeEach(() => {
14
+ searchDependenciesHelper = new SearchDependencies();
15
+ disciplineContinentPolicy = new DisciplineContinent(searchDependenciesHelper.dependencies);
16
+ searchDependenciesHelper.setResultsCount(10);
17
+ searchDependenciesHelper.setPageNumber(1);
18
+ searchDependenciesHelper.setPortalType(PortalType.BACHELOR);
19
+ });
20
+ it('Should return true when all conditions are met', async () => {
21
+ const disciplineId = '54'; // Agriculture & Forestry
22
+ const continentId = '1'; // Europe
23
+ searchDependenciesHelper.setFilterKeyValues(new Map([
24
+ [FilterKey.DISCIPLINES, [disciplineId]],
25
+ [FilterKey.CONTINENT, [continentId]]
26
+ ]));
27
+ const result = await disciplineContinentPolicy.shouldIndex();
28
+ expect(result).toBe(true);
29
+ });
30
+ it('Should return false when multiple disciplines are selected', async () => {
31
+ const firstDisciplineId = '54'; // Agriculture & Forestry
32
+ const secondDisciplineId = '12'; // Applied Sciences & Professions
33
+ const continentId = '9'; // Asia
34
+ searchDependenciesHelper.setFilterKeyValues(new Map([
35
+ [FilterKey.DISCIPLINES, [firstDisciplineId, secondDisciplineId]],
36
+ [FilterKey.CONTINENT, [continentId]]
37
+ ]));
38
+ const result = await disciplineContinentPolicy.shouldIndex();
39
+ expect(result).toBe(false);
40
+ });
41
+ it('Should return false when multiple continents are selected', async () => {
42
+ const disciplineId = '54'; // Agriculture & Forestry
43
+ const firstContinentId = '1'; // Europe
44
+ const secondContinentId = '9'; // Asia
45
+ searchDependenciesHelper.setFilterKeyValues(new Map([
46
+ [FilterKey.DISCIPLINES, [disciplineId]],
47
+ [FilterKey.CONTINENT, [firstContinentId, secondContinentId]]
48
+ ]));
49
+ const result = await disciplineContinentPolicy.shouldIndex();
50
+ expect(result).toBe(false);
51
+ });
52
+ it('Should return false when no disciplines are selected', async () => {
53
+ const continentId = '1'; // Europe
54
+ searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.CONTINENT, [continentId]]]));
55
+ const result = await disciplineContinentPolicy.shouldIndex();
56
+ expect(result).toBe(false);
57
+ });
58
+ it('Should return false when no continents are selected', async () => {
59
+ const disciplineId = '54'; // Agriculture & Forestry
60
+ searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DISCIPLINES, [disciplineId]]]));
61
+ const result = await disciplineContinentPolicy.shouldIndex();
62
+ expect(result).toBe(false);
63
+ });
64
+ it('Should return false when other filters are selected', async () => {
65
+ const disciplineId = '54'; // Agriculture & Forestry
66
+ const continentId = '10'; // Africa
67
+ const attendance = 'online';
68
+ searchDependenciesHelper.setFilterKeyValues(new Map([
69
+ [FilterKey.DISCIPLINES, [disciplineId]],
70
+ [FilterKey.CONTINENT, [continentId]],
71
+ [FilterKey.DELIVERY_METHOD, [attendance]]
72
+ ]));
73
+ const result = await disciplineContinentPolicy.shouldIndex();
74
+ expect(result).toBe(false);
75
+ });
76
+ it('Should return false when number of results is less than 7', async () => {
77
+ const disciplineId = '54'; // Agriculture & Forestry
78
+ const continentId = '1'; // Europe
79
+ searchDependenciesHelper.setResultsCount(4);
80
+ searchDependenciesHelper.setFilterKeyValues(new Map([
81
+ [FilterKey.DISCIPLINES, [disciplineId]],
82
+ [FilterKey.CONTINENT, [continentId]]
83
+ ]));
84
+ const result = await disciplineContinentPolicy.shouldIndex();
85
+ expect(result).toBe(false);
86
+ });
87
+ it('Should return false when page number is higher than 2', async () => {
88
+ const disciplineId = '54'; // Agriculture & Forestry
89
+ const continentId = '1'; // Europe
90
+ searchDependenciesHelper.setPageNumber(3);
91
+ searchDependenciesHelper.setFilterKeyValues(new Map([
92
+ [FilterKey.DISCIPLINES, [disciplineId]],
93
+ [FilterKey.CONTINENT, [continentId]]
94
+ ]));
95
+ const result = await disciplineContinentPolicy.shouldIndex();
96
+ expect(result).toBe(false);
97
+ });
98
+ it('Should return false when portal distance learning', async () => {
99
+ const disciplineId = '54'; // Agriculture & Forestry
100
+ const continentId = '1'; // Europe
101
+ searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
102
+ searchDependenciesHelper.setFilterKeyValues(new Map([
103
+ [FilterKey.DISCIPLINES, [disciplineId]],
104
+ [FilterKey.CONTINENT, [continentId]]
105
+ ]));
106
+ const result = await disciplineContinentPolicy.shouldIndex();
107
+ expect(result).toBe(false);
108
+ });
109
+ });
110
+ describe('generateUrls', () => {
111
+ let sitemapDependenciesHelper;
112
+ let disciplineContinentPolicy;
113
+ beforeEach(() => {
114
+ sitemapDependenciesHelper = new SitemapDependencies();
115
+ sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
116
+ disciplineContinentPolicy = new DisciplineContinent(sitemapDependenciesHelper.dependencies);
117
+ DisciplinePresenter.getInstance = vi.fn().mockReturnValue({
118
+ getFragments: vi.fn().mockReturnValue([
119
+ { id: '54', path: 'agriculture-forestry' },
120
+ { id: '12', path: 'applied-sciences' },
121
+ { id: '152', path: 'computer-science-it' }
122
+ ])
123
+ });
124
+ ContinentPresenter.getInstance = vi.fn().mockReturnValue({
125
+ getFragments: vi.fn().mockReturnValue([
126
+ { id: '1', path: 'europe' },
127
+ { id: '9', path: 'asia' },
128
+ { id: '10', path: 'africa' },
129
+ { id: '4', path: 'north-america' }
130
+ ])
131
+ });
132
+ });
133
+ afterEach(() => {
134
+ sitemapDependenciesHelper.resetMocks();
135
+ });
136
+ it('Should generate URLs for valid discipline-continent combinations', async () => {
137
+ // Mock the checkRulesForSitemap to control which combinations pass
138
+ const resultMap = new Map();
139
+ // Set up all possible combinations
140
+ for (const discipline of ['54', '12', '152']) {
141
+ for (const continent of ['1', '9', '10', '4']) {
142
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
143
+ // Allow all valid combinations
144
+ resultMap.set(key, true);
145
+ }
146
+ }
147
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
148
+ // Call the method via reflection since it's protected
149
+ const urls = await disciplineContinentPolicy.generateUrls();
150
+ // Calculate expected URLs: 3 disciplines * 4 continents * 2 pages = 24 URLs
151
+ expect(urls).toHaveLength(12);
152
+ // Verify some valid combinations
153
+ expect(urls).toContain('agriculture-forestry/europe');
154
+ expect(urls).toContain('agriculture-forestry/asia');
155
+ expect(urls).toContain('applied-sciences/africa');
156
+ expect(urls).toContain('computer-science-it/north-america');
157
+ });
158
+ it('Should exclude specific discipline-continent combinations based on rules', async () => {
159
+ // Create a map that returns false for specific combinations
160
+ const resultMap = new Map();
161
+ // Only allow Europe continent, exclude Computer Science discipline
162
+ for (const discipline of ['54', '12', '152']) {
163
+ for (const continent of ['1', '9', '10', '4']) {
164
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
165
+ // Only Europe continent and not Computer Science discipline should pass
166
+ resultMap.set(key, continent === '1' && discipline !== '152');
167
+ }
168
+ }
169
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
170
+ const urls = await disciplineContinentPolicy.generateUrls();
171
+ // Calculate expected URLs: 2 disciplines (excluding computer science) * 1 continent (Europe) * 2 pages = 4 URLs
172
+ expect(urls).toHaveLength(2);
173
+ // Verify included combinations
174
+ expect(urls).toContain('agriculture-forestry/europe');
175
+ expect(urls).toContain('applied-sciences/europe');
176
+ // Verify excluded combinations
177
+ expect(urls).not.toContain('computer-science/europe');
178
+ expect(urls).not.toContain('agriculture-forestry/asia');
179
+ });
180
+ it('Should exclude all URLs when all rule checks fail', async () => {
181
+ // Create a map that returns false for all combinations
182
+ const resultMap = new Map();
183
+ for (const discipline of ['54', '12', '152']) {
184
+ for (const continent of ['1', '9', '10', '4']) {
185
+ const key = `${FilterKey.DISCIPLINES}:${discipline}|${FilterKey.CONTINENT}:${continent}`;
186
+ resultMap.set(key, false);
187
+ }
188
+ }
189
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap, false);
190
+ const urls = await disciplineContinentPolicy.generateUrls();
191
+ // Should include no URLs
192
+ expect(urls).toHaveLength(0);
193
+ });
194
+ it('Should handle empty discipline fragments', async () => {
195
+ // Mock the DisciplinePresenter to return empty fragments
196
+ DisciplinePresenter.getInstance.mockReturnValueOnce({
197
+ getFragments: vi.fn().mockReturnValue([])
198
+ });
199
+ sitemapDependenciesHelper.mockCheckRulesForSitemap();
200
+ const urls = await disciplineContinentPolicy.generateUrls();
201
+ // Should return empty array
202
+ expect(urls).toHaveLength(0);
203
+ });
204
+ it('Should handle empty continent fragments', async () => {
205
+ // Mock the ContinentPresenter to return empty fragments
206
+ ContinentPresenter.getInstance.mockReturnValueOnce({
207
+ getFragments: vi.fn().mockReturnValue([])
208
+ });
209
+ sitemapDependenciesHelper.mockCheckRulesForSitemap();
210
+ const urls = await disciplineContinentPolicy.generateUrls();
211
+ // Should return empty array
212
+ expect(urls).toHaveLength(0);
213
+ });
214
+ it('Should handle performance with large number of combinations', async () => {
215
+ // Generate larger datasets for testing
216
+ const largeDisciplineSet = Array.from({ length: 20 }, (_, index) => ({
217
+ id: `discipline-${index}`,
218
+ path: `discipline-path-${index}`
219
+ }));
220
+ const largeContinentSet = Array.from({ length: 7 }, (_, index) => ({
221
+ id: `continent-${index}`,
222
+ path: `continent-path-${index}`
223
+ }));
224
+ // Override mocks with large datasets
225
+ DisciplinePresenter.getInstance.mockReturnValueOnce({
226
+ getFragments: vi.fn().mockReturnValue(largeDisciplineSet)
227
+ });
228
+ ContinentPresenter.getInstance.mockReturnValueOnce({
229
+ getFragments: vi.fn().mockReturnValue(largeContinentSet)
230
+ });
231
+ // Mock to only allow combinations where discipline index is even and continent index is less than 5
232
+ const resultMap = new Map();
233
+ for (let d = 0; d < largeDisciplineSet.length; d++) {
234
+ for (let c = 0; c < largeContinentSet.length; c++) {
235
+ const disciplineId = largeDisciplineSet[d].id;
236
+ const continentId = largeContinentSet[c].id;
237
+ const key = `${FilterKey.DISCIPLINES}:${disciplineId}|${FilterKey.CONTINENT}:${continentId}`;
238
+ resultMap.set(key, d % 2 === 0 && c < 5);
239
+ }
240
+ }
241
+ sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
242
+ const urls = await disciplineContinentPolicy.generateUrls();
243
+ // Calculate expected count: 10 disciplines (even indices) * 5 continents (indices 0-4) * 2 pages
244
+ // = 10 * 5 * 2 = 100 URLs
245
+ expect(urls).toHaveLength(50);
246
+ // Test specific items
247
+ expect(urls).toContain('discipline-path-0/continent-path-0');
248
+ expect(urls).toContain('discipline-path-2/continent-path-3');
249
+ expect(urls).not.toContain('discipline-path-1/continent-path-0'); // Odd discipline
250
+ expect(urls).not.toContain('discipline-path-0/continent-path-5'); // Continent index >= 5
251
+ });
252
+ });
253
+ });