@studyportals/fawkes 8.7.1-0 → 8.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) 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 +1 -1
  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/DegreeTuitionFeeArea.d.ts +3 -3
  168. package/dist/src/programmes/policies/DegreeTuitionFeeArea.js +6 -6
  169. package/dist/src/programmes/policies/DegreeTuitionFeeAttendance.d.ts +2 -2
  170. package/dist/src/programmes/policies/DegreeTuitionFeeAttendance.js +7 -7
  171. package/dist/src/programmes/policies/DegreeTuitionFeeContinent.d.ts +2 -2
  172. package/dist/src/programmes/policies/DegreeTuitionFeeContinent.js +6 -6
  173. package/dist/src/programmes/policies/DegreeTuitionFeeFormat.d.ts +2 -2
  174. package/dist/src/programmes/policies/DegreeTuitionFeeFormat.js +6 -6
  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/rules/DegreeAttendanceDisciplineRule.d.ts +2 -2
  222. package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.d.ts +2 -2
  223. package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.d.ts +2 -2
  224. package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.d.ts +2 -2
  225. package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.d.ts +2 -2
  226. package/dist/src/programmes/rules/DegreeDisciplineRule.d.ts +2 -2
  227. package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +2 -2
  228. package/dist/src/programmes/rules/IndexableDegreeRule.js +1 -1
  229. package/dist/src/programmes/rules/IndexableDurationRule.d.ts +2 -2
  230. package/dist/src/programmes/rules/IndexableDurationRule.js +1 -1
  231. package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +2 -2
  232. package/dist/src/programmes/rules/IndexableEducationalFormRule.js +1 -1
  233. package/dist/src/programmes/rules/IndexablePageNumberRule.js +1 -1
  234. package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +2 -2
  235. package/dist/src/programmes/rules/MinimumAmountOfResultsRule.d.ts +3 -3
  236. package/dist/src/programmes/rules/MinimumAmountOfResultsRule.js +1 -1
  237. package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +1 -1
  238. package/dist/src/programmes/rules/OneYearOnlyRule.d.ts +2 -2
  239. package/dist/src/programmes/types/IProgrammeSearchApplicationState.d.ts +1 -1
  240. package/dist/src/programmes/types/IProgrammeSearchDependencies.d.ts +1 -1
  241. package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +1 -1
  242. package/dist/src/programmes/types/IProgrammeSitemapDependencies.d.ts +2 -2
  243. package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +1 -1
  244. package/dist/src/scholarships/SearchIndexabilityManager.d.ts +5 -5
  245. package/dist/src/scholarships/SearchIndexabilityManager.js +1 -1
  246. package/dist/src/scholarships/policies/Area.d.ts +3 -3
  247. package/dist/src/scholarships/policies/Area.js +4 -4
  248. package/dist/src/scholarships/policies/Country.d.ts +3 -3
  249. package/dist/src/scholarships/policies/Country.js +4 -4
  250. package/dist/src/scholarships/policies/Discipline.d.ts +4 -4
  251. package/dist/src/scholarships/policies/Discipline.js +5 -5
  252. package/dist/src/scholarships/policies/DisciplineCountry.d.ts +3 -3
  253. package/dist/src/scholarships/policies/DisciplineCountry.js +5 -5
  254. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.d.ts +2 -2
  255. package/dist/src/scholarships/policies/ScholarshipSeoIndexabilityPolicy.js +2 -2
  256. package/dist/src/scholarships/policies/Unfiltered.d.ts +2 -2
  257. package/dist/src/scholarships/policies/Unfiltered.js +2 -2
  258. package/dist/src/scholarships/policies/UniversityCountry.d.ts +3 -3
  259. package/dist/src/scholarships/policies/UniversityCountry.js +4 -4
  260. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.d.ts +3 -3
  261. package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +1 -1
  262. package/dist/src/scholarships/rules/SearchVolumeAreasRule.d.ts +3 -3
  263. package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.d.ts +3 -3
  264. package/dist/src/scholarships/rules/SearchVolumeCountriesRule.d.ts +3 -3
  265. package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.d.ts +3 -3
  266. package/dist/src/scholarships/types/IScholarshipSeoDependencies.d.ts +1 -1
  267. package/dist/src/scholarships/types/IScholarshipSitemapDependencies.d.ts +2 -2
  268. package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +3 -3
  269. package/dist/src/sitemap-generator/IRankingApiClient.d.ts +1 -1
  270. package/dist/src/sitemap-generator/ISearchApiClient.d.ts +1 -1
  271. package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +3 -3
  272. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +4 -4
  273. package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +8 -8
  274. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +3 -3
  275. package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +13 -13
  276. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +3 -3
  277. package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +7 -7
  278. package/dist/src/structured-data/OrganisationStructuredDataFactory.d.ts +1 -1
  279. package/dist/src/structured-data/ProgrammeStructuredDataFactory.d.ts +1 -1
  280. package/package.json +1 -1
  281. package/dist/tests/common/rules/NoFiltersSelectedRule.test.d.mts +0 -1
  282. package/dist/tests/common/rules/NoFiltersSelectedRule.test.mjs +0 -40
  283. package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.d.mts +0 -1
  284. package/dist/tests/common/rules/OnlyFiltersSelectedRule.test.mjs +0 -70
  285. package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.d.mts +0 -1
  286. package/dist/tests/common/rules/SingleValueSelectedForFilterRule.test.mjs +0 -54
  287. package/dist/tests/organisations/policies/our-picks/Area.test.d.mts +0 -1
  288. package/dist/tests/organisations/policies/our-picks/Area.test.mjs +0 -125
  289. package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.d.mts +0 -1
  290. package/dist/tests/organisations/policies/our-picks/AreaAttendance.test.mjs +0 -238
  291. package/dist/tests/organisations/policies/our-picks/Attendance.test.d.mts +0 -1
  292. package/dist/tests/organisations/policies/our-picks/Attendance.test.mjs +0 -119
  293. package/dist/tests/organisations/policies/our-picks/Continent.test.d.mts +0 -1
  294. package/dist/tests/organisations/policies/our-picks/Continent.test.mjs +0 -105
  295. package/dist/tests/organisations/policies/our-picks/Country.test.d.mts +0 -1
  296. package/dist/tests/organisations/policies/our-picks/Country.test.mjs +0 -109
  297. package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.d.mts +0 -1
  298. package/dist/tests/organisations/policies/our-picks/CountryAreaCity.test.mjs +0 -152
  299. package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.d.mts +0 -1
  300. package/dist/tests/organisations/policies/our-picks/CountryAttendance.test.mjs +0 -223
  301. package/dist/tests/organisations/policies/our-picks/CountryCity.test.d.mts +0 -1
  302. package/dist/tests/organisations/policies/our-picks/CountryCity.test.mjs +0 -109
  303. package/dist/tests/organisations/policies/our-picks/Unfiltered.test.d.mts +0 -1
  304. package/dist/tests/organisations/policies/our-picks/Unfiltered.test.mjs +0 -60
  305. package/dist/tests/organisations/policies/ranked/RankedArea.test.d.mts +0 -1
  306. package/dist/tests/organisations/policies/ranked/RankedArea.test.mjs +0 -149
  307. package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.d.mts +0 -1
  308. package/dist/tests/organisations/policies/ranked/RankedAreaDiscipline.test.mjs +0 -237
  309. package/dist/tests/organisations/policies/ranked/RankedAttendance.test.d.mts +0 -1
  310. package/dist/tests/organisations/policies/ranked/RankedAttendance.test.mjs +0 -139
  311. package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.d.mts +0 -1
  312. package/dist/tests/organisations/policies/ranked/RankedAttendanceDiscipline.test.mjs +0 -224
  313. package/dist/tests/organisations/policies/ranked/RankedContinent.test.d.mts +0 -1
  314. package/dist/tests/organisations/policies/ranked/RankedContinent.test.mjs +0 -125
  315. package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.d.mts +0 -1
  316. package/dist/tests/organisations/policies/ranked/RankedContinentAttendance.test.mjs +0 -253
  317. package/dist/tests/organisations/policies/ranked/RankedCountry.test.d.mts +0 -1
  318. package/dist/tests/organisations/policies/ranked/RankedCountry.test.mjs +0 -131
  319. package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.d.mts +0 -1
  320. package/dist/tests/organisations/policies/ranked/RankedCountryAttendance.test.mjs +0 -230
  321. package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.d.mts +0 -1
  322. package/dist/tests/organisations/policies/ranked/RankedCountryDiscipline.test.mjs +0 -197
  323. package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.d.mts +0 -1
  324. package/dist/tests/organisations/policies/ranked/RankedDiscipline.test.mjs +0 -124
  325. package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.d.mts +0 -1
  326. package/dist/tests/organisations/policies/ranked/RankedUnfiltered.test.mjs +0 -75
  327. package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.d.mts +0 -1
  328. package/dist/tests/organisations/rules/ContinentIsEuropeRule.test.mjs +0 -59
  329. package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.d.mts +0 -1
  330. package/dist/tests/organisations/rules/MinimumAmountOfRankedResultsRule.test.mjs +0 -77
  331. package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.d.mts +0 -1
  332. package/dist/tests/organisations/rules/MinimumAmountOfResultsRule.test.mjs +0 -77
  333. package/dist/tests/organisations/rules/OnlineAttendanceRule.test.d.mts +0 -1
  334. package/dist/tests/organisations/rules/OnlineAttendanceRule.test.mjs +0 -59
  335. package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.d.mts +0 -1
  336. package/dist/tests/organisations/rules/SearchVolumeAreasAttendanceRule.test.mjs +0 -59
  337. package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.d.mts +0 -1
  338. package/dist/tests/organisations/rules/SearchVolumeAreasDisciplineRule.test.mjs +0 -59
  339. package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.d.mts +0 -1
  340. package/dist/tests/organisations/rules/SearchVolumeCountriesAttendanceRule.test.mjs +0 -59
  341. package/dist/tests/organisations/utils/SearchDependencies.util.d.mts +0 -20
  342. package/dist/tests/organisations/utils/SearchDependencies.util.mjs +0 -88
  343. package/dist/tests/organisations/utils/SitemapDependencies.util.d.mts +0 -18
  344. package/dist/tests/organisations/utils/SitemapDependencies.util.mjs +0 -54
  345. package/dist/tests/presenters/AreaPresenter.test.d.mts +0 -1
  346. package/dist/tests/presenters/AreaPresenter.test.mjs +0 -46
  347. package/dist/tests/presenters/AttendancePresenter.test.d.mts +0 -1
  348. package/dist/tests/presenters/AttendancePresenter.test.mjs +0 -41
  349. package/dist/tests/presenters/ContinentPresenter.test.d.mts +0 -1
  350. package/dist/tests/presenters/ContinentPresenter.test.mjs +0 -44
  351. package/dist/tests/presenters/CountryPresenter.test.d.mts +0 -1
  352. package/dist/tests/presenters/CountryPresenter.test.mjs +0 -50
  353. package/dist/tests/presenters/DegreePresenter.test.d.mts +0 -1
  354. package/dist/tests/presenters/DegreePresenter.test.mjs +0 -51
  355. package/dist/tests/presenters/DisciplinePresenter.test.d.mts +0 -1
  356. package/dist/tests/presenters/DisciplinePresenter.test.mjs +0 -40
  357. package/dist/tests/presenters/DurationPresenter.test.d.mts +0 -1
  358. package/dist/tests/presenters/DurationPresenter.test.mjs +0 -64
  359. package/dist/tests/presenters/EducationalFormPresenter.test.d.mts +0 -1
  360. package/dist/tests/presenters/EducationalFormPresenter.test.mjs +0 -60
  361. package/dist/tests/presenters/FormatPresenter.test.d.mts +0 -1
  362. package/dist/tests/presenters/FormatPresenter.test.mjs +0 -43
  363. package/dist/tests/presenters/SpecialProgrammesPresenter.test.d.mts +0 -1
  364. package/dist/tests/presenters/SpecialProgrammesPresenter.test.mjs +0 -66
  365. package/dist/tests/presenters/TuitionFeePresenter.test.d.mts +0 -1
  366. package/dist/tests/presenters/TuitionFeePresenter.test.mjs +0 -52
  367. package/dist/tests/programmes/policies/Area.test.d.mts +0 -1
  368. package/dist/tests/programmes/policies/Area.test.mjs +0 -153
  369. package/dist/tests/programmes/policies/Attendance.test.d.mts +0 -1
  370. package/dist/tests/programmes/policies/Attendance.test.mjs +0 -173
  371. package/dist/tests/programmes/policies/AttendanceDegree.test.d.mts +0 -1
  372. package/dist/tests/programmes/policies/AttendanceDegree.test.mjs +0 -291
  373. package/dist/tests/programmes/policies/Continent.test.d.mts +0 -1
  374. package/dist/tests/programmes/policies/Continent.test.mjs +0 -169
  375. package/dist/tests/programmes/policies/Country.test.d.mts +0 -1
  376. package/dist/tests/programmes/policies/Country.test.mjs +0 -164
  377. package/dist/tests/programmes/policies/CountryAttendance.test.d.mts +0 -1
  378. package/dist/tests/programmes/policies/CountryAttendance.test.mjs +0 -251
  379. package/dist/tests/programmes/policies/CountryAttendanceDegree.test.d.mts +0 -1
  380. package/dist/tests/programmes/policies/CountryAttendanceDegree.test.mjs +0 -337
  381. package/dist/tests/programmes/policies/CountryDegree.test.d.mts +0 -1
  382. package/dist/tests/programmes/policies/CountryDegree.test.mjs +0 -262
  383. package/dist/tests/programmes/policies/CountryDuration.test.d.mts +0 -1
  384. package/dist/tests/programmes/policies/CountryDuration.test.mjs +0 -234
  385. package/dist/tests/programmes/policies/CountryDurationDegree.test.d.mts +0 -1
  386. package/dist/tests/programmes/policies/CountryDurationDegree.test.mjs +0 -304
  387. package/dist/tests/programmes/policies/CountryEducationalForm.test.d.mts +0 -1
  388. package/dist/tests/programmes/policies/CountryEducationalForm.test.mjs +0 -260
  389. package/dist/tests/programmes/policies/CountryFormat.test.d.mts +0 -1
  390. package/dist/tests/programmes/policies/CountryFormat.test.mjs +0 -253
  391. package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.d.mts +0 -1
  392. package/dist/tests/programmes/policies/DegreeAttendanceDiscipline.test.mjs +0 -179
  393. package/dist/tests/programmes/policies/DegreeCountryAttendance.test.d.mts +0 -1
  394. package/dist/tests/programmes/policies/DegreeCountryAttendance.test.mjs +0 -267
  395. package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.d.mts +0 -1
  396. package/dist/tests/programmes/policies/DegreeCountryTuitionFee.test.mjs +0 -217
  397. package/dist/tests/programmes/policies/DegreeFormat.test.d.mts +0 -1
  398. package/dist/tests/programmes/policies/DegreeFormat.test.mjs +0 -221
  399. package/dist/tests/programmes/policies/Discipline.test.d.mts +0 -1
  400. package/dist/tests/programmes/policies/Discipline.test.mjs +0 -159
  401. package/dist/tests/programmes/policies/DisciplineAttendance.test.d.mts +0 -1
  402. package/dist/tests/programmes/policies/DisciplineAttendance.test.mjs +0 -292
  403. package/dist/tests/programmes/policies/DisciplineContinent.test.d.mts +0 -1
  404. package/dist/tests/programmes/policies/DisciplineContinent.test.mjs +0 -253
  405. package/dist/tests/programmes/policies/DisciplineCountry.test.d.mts +0 -1
  406. package/dist/tests/programmes/policies/DisciplineCountry.test.mjs +0 -244
  407. package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.d.mts +0 -1
  408. package/dist/tests/programmes/policies/DisciplineCountryEducationalForm.test.mjs +0 -345
  409. package/dist/tests/programmes/policies/DisciplineDegree.test.d.mts +0 -1
  410. package/dist/tests/programmes/policies/DisciplineDegree.test.mjs +0 -273
  411. package/dist/tests/programmes/policies/DisciplineDuration.test.d.mts +0 -1
  412. package/dist/tests/programmes/policies/DisciplineDuration.test.mjs +0 -278
  413. package/dist/tests/programmes/policies/DisciplineEducationalForm.test.d.mts +0 -1
  414. package/dist/tests/programmes/policies/DisciplineEducationalForm.test.mjs +0 -302
  415. package/dist/tests/programmes/policies/DisciplineFormat.test.d.mts +0 -1
  416. package/dist/tests/programmes/policies/DisciplineFormat.test.mjs +0 -266
  417. package/dist/tests/programmes/policies/Duration.test.d.mts +0 -1
  418. package/dist/tests/programmes/policies/Duration.test.mjs +0 -179
  419. package/dist/tests/programmes/policies/Format.test.d.mts +0 -1
  420. package/dist/tests/programmes/policies/Format.test.mjs +0 -117
  421. package/dist/tests/programmes/policies/NewRulesValidation.test.d.mts +0 -1
  422. package/dist/tests/programmes/policies/NewRulesValidation.test.mjs +0 -320
  423. package/dist/tests/programmes/policies/SpecialProgrammes.test.d.mts +0 -1
  424. package/dist/tests/programmes/policies/SpecialProgrammes.test.mjs +0 -171
  425. package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.d.mts +0 -1
  426. package/dist/tests/programmes/policies/TuitionFeeAttendanceDiscipline.test.mjs +0 -360
  427. package/dist/tests/programmes/policies/TuitionFeeContinent.test.d.mts +0 -1
  428. package/dist/tests/programmes/policies/TuitionFeeContinent.test.mjs +0 -293
  429. package/dist/tests/programmes/policies/TuitionFeeCountry.test.d.mts +0 -1
  430. package/dist/tests/programmes/policies/TuitionFeeCountry.test.mjs +0 -266
  431. package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.d.mts +0 -1
  432. package/dist/tests/programmes/policies/TuitionFeeDiscipline.test.mjs +0 -267
  433. package/dist/tests/programmes/policies/Unfiltered.test.d.mts +0 -1
  434. package/dist/tests/programmes/policies/Unfiltered.test.mjs +0 -90
  435. package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.d.mts +0 -1
  436. package/dist/tests/programmes/rules/AffordableTuitionFeeRule.test.mjs +0 -27
  437. package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.d.mts +0 -1
  438. package/dist/tests/programmes/rules/DegreeCountrySpecificRule.test.mjs +0 -121
  439. package/dist/tests/programmes/rules/DegreeDisciplineRule.test.d.mts +0 -1
  440. package/dist/tests/programmes/rules/DegreeDisciplineRule.test.mjs +0 -169
  441. package/dist/tests/programmes/rules/IndexableDegreeRule.test.d.mts +0 -1
  442. package/dist/tests/programmes/rules/IndexableDegreeRule.test.mjs +0 -101
  443. package/dist/tests/programmes/rules/IndexableDurationRule.test..d.mts +0 -1
  444. package/dist/tests/programmes/rules/IndexableDurationRule.test..mjs +0 -25
  445. package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.d.mts +0 -1
  446. package/dist/tests/programmes/rules/IndexableEducationalFormRule.test.mjs +0 -27
  447. package/dist/tests/programmes/rules/IndexablePageNumberRule.test.d.mts +0 -1
  448. package/dist/tests/programmes/rules/IndexablePageNumberRule.test.mjs +0 -51
  449. package/dist/tests/programmes/rules/MbaDegreeRule.test.d.mts +0 -1
  450. package/dist/tests/programmes/rules/MbaDegreeRule.test.mjs +0 -55
  451. package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.d.mts +0 -1
  452. package/dist/tests/programmes/rules/MbaOrMscDegreeRule.test.mjs +0 -53
  453. package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.d.mts +0 -1
  454. package/dist/tests/programmes/rules/MinimumAmountOfResultsRule.test.mjs +0 -79
  455. package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.d.mts +0 -1
  456. package/dist/tests/programmes/rules/NotDistanceLearningPortalRule.test.mjs +0 -57
  457. package/dist/tests/programmes/rules/OneYearDurationRule.test..d.mts +0 -1
  458. package/dist/tests/programmes/rules/OneYearDurationRule.test..mjs +0 -40
  459. package/dist/tests/programmes/rules/OnlineAttendanceRule.test.d.mts +0 -1
  460. package/dist/tests/programmes/rules/OnlineAttendanceRule.test.mjs +0 -69
  461. package/dist/tests/programmes/rules/PartTimeFormatRule.test.d.mts +0 -1
  462. package/dist/tests/programmes/rules/PartTimeFormatRule.test.mjs +0 -27
  463. package/dist/tests/programmes/utils/SearchDependencies.util.d.mts +0 -16
  464. package/dist/tests/programmes/utils/SearchDependencies.util.mjs +0 -73
  465. package/dist/tests/programmes/utils/SitemapDependencies.util.d.mts +0 -15
  466. package/dist/tests/programmes/utils/SitemapDependencies.util.mjs +0 -49
  467. package/dist/tests/scholarships/policies/Area.test.d.mts +0 -1
  468. package/dist/tests/scholarships/policies/Area.test.mjs +0 -121
  469. package/dist/tests/scholarships/policies/Country.test.d.mts +0 -1
  470. package/dist/tests/scholarships/policies/Country.test.mjs +0 -97
  471. package/dist/tests/scholarships/policies/Discipline.test.d.mts +0 -1
  472. package/dist/tests/scholarships/policies/Discipline.test.mjs +0 -93
  473. package/dist/tests/scholarships/policies/DisciplineCountry.test.d.mts +0 -1
  474. package/dist/tests/scholarships/policies/DisciplineCountry.test.mjs +0 -151
  475. package/dist/tests/scholarships/policies/Unfiltered.test.d.mts +0 -1
  476. package/dist/tests/scholarships/policies/Unfiltered.test.mjs +0 -44
  477. package/dist/tests/scholarships/policies/UniversityCountry.test.d.mts +0 -1
  478. package/dist/tests/scholarships/policies/UniversityCountry.test.mjs +0 -115
  479. package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.d.mts +0 -1
  480. package/dist/tests/scholarships/rules/ExceptAustaliaAreasRule.test.mjs +0 -64
  481. package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.d.mts +0 -1
  482. package/dist/tests/scholarships/rules/SearchVolumeAreasRule.test.mjs +0 -62
  483. package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.d.mts +0 -1
  484. package/dist/tests/scholarships/rules/SearchVolumeCountriesDisciplinesRule.test.mjs +0 -114
  485. package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.d.mts +0 -1
  486. package/dist/tests/scholarships/rules/SearchVolumeCountriesRule.test.mjs +0 -62
  487. package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.d.mts +0 -1
  488. package/dist/tests/scholarships/rules/SearchVolumeDisciplinesRule.test.mjs +0 -62
  489. package/dist/tests/scholarships/utils/SearchDependencies.util.d.mts +0 -16
  490. package/dist/tests/scholarships/utils/SearchDependencies.util.mjs +0 -70
  491. package/dist/tests/scholarships/utils/SitemapDependencies.util.d.mts +0 -11
  492. package/dist/tests/scholarships/utils/SitemapDependencies.util.mjs +0 -33
  493. package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.d.mts +0 -1
  494. package/dist/tests/sitemap-generator/BaseSitemapUrlGeneratorManager.test.mjs +0 -82
  495. package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.d.mts +0 -1
  496. package/dist/tests/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.test.mjs +0 -85
  497. package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.d.mts +0 -1
  498. package/dist/tests/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.test.mjs +0 -77
  499. package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.d.mts +0 -1
  500. package/dist/tests/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.test.mjs +0 -60
  501. package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.d.mts +0 -1
  502. package/dist/tests/structured-data/OrganisationStructuredDataFactory.test.mjs +0 -334
  503. package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.d.mts +0 -1
  504. package/dist/tests/structured-data/ProgrammeStructuredDataFactory.test.mjs +0 -562
  505. package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.d.mts +0 -1
  506. package/dist/tests/structured-data/ScholarshipStructuredDataFactory.test.mjs +0 -292
  507. package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.d.mts +0 -1
  508. package/dist/tests/structured-data/SearchStructuredDataFactory.paywall.test.mjs +0 -258
@@ -1,179 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { FilterKey } from '@studyportals/search-filters/server-side';
3
- import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
4
- import { Duration } from '@/programmes/policies/Duration';
5
- import { PortalType } from '@studyportals/domain-client';
6
- import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
7
- import { DurationPresenter } from '@/presenters/DurationPresenter';
8
- describe('Policy:Duration', () => {
9
- describe('shouldIndex', () => {
10
- let searchDependenciesHelper;
11
- let durationPolicy;
12
- beforeEach(() => {
13
- searchDependenciesHelper = new SearchDependencies();
14
- durationPolicy = new Duration(searchDependenciesHelper.dependencies);
15
- searchDependenciesHelper.setResultsCount(10);
16
- searchDependenciesHelper.setPageNumber(1);
17
- searchDependenciesHelper.setPortalType(PortalType.BACHELOR);
18
- });
19
- it('Should return true when 1 year duration is selected', async () => {
20
- const duration = '[360,360]'; // 1 year
21
- searchDependenciesHelper.setFilterKeyValues(new Map([
22
- [FilterKey.DURATION, [duration]]
23
- ]));
24
- const result = await durationPolicy.shouldIndex();
25
- expect(result).toBe(true);
26
- });
27
- it('Should return true when 2 years duration is selected', async () => {
28
- const duration = '[720,720]'; // 2 years
29
- searchDependenciesHelper.setFilterKeyValues(new Map([
30
- [FilterKey.DURATION, [duration]]
31
- ]));
32
- const result = await durationPolicy.shouldIndex();
33
- expect(result).toBe(true);
34
- });
35
- it('Should return false when multiple durations are selected', async () => {
36
- const firstDuration = '[360,360]'; // 1 year
37
- const secondDuration = '[720,720]'; // 2 years
38
- searchDependenciesHelper.setFilterKeyValues(new Map([
39
- [FilterKey.DURATION, [firstDuration, secondDuration]]
40
- ]));
41
- const result = await durationPolicy.shouldIndex();
42
- expect(result).toBe(false);
43
- });
44
- it('Should return false when no duration is selected', async () => {
45
- searchDependenciesHelper.setFilterKeyValues(new Map());
46
- const result = await durationPolicy.shouldIndex();
47
- expect(result).toBe(false);
48
- });
49
- it('Should return false when other filters are selected', async () => {
50
- const duration = '[360,360]'; // 1 year
51
- const countryId = '30'; // UK
52
- searchDependenciesHelper.setFilterKeyValues(new Map([
53
- [FilterKey.DURATION, [duration]],
54
- [FilterKey.COUNTRY, [countryId]]
55
- ]));
56
- const result = await durationPolicy.shouldIndex();
57
- expect(result).toBe(false);
58
- });
59
- it('Should return false when duration filter is not 1 year or 2 years', async () => {
60
- const duration = '[-1,359]'; // This will be filtered out in generateUrls, but shouldIndex only checks basic rules
61
- searchDependenciesHelper.setFilterKeyValues(new Map([
62
- [FilterKey.DURATION, [duration]]
63
- ]));
64
- const result = await durationPolicy.shouldIndex();
65
- expect(result).toBe(false);
66
- });
67
- it('Should return false when number of results is less than 7', async () => {
68
- const duration = '[720,720]'; // 2 years
69
- searchDependenciesHelper.setResultsCount(6);
70
- searchDependenciesHelper.setFilterKeyValues(new Map([
71
- [FilterKey.DURATION, [duration]]
72
- ]));
73
- const result = await durationPolicy.shouldIndex();
74
- expect(result).toBe(false);
75
- });
76
- it('Should return false when page number is higher than 2', async () => {
77
- const duration = '[360,360]'; // 1 year
78
- searchDependenciesHelper.setPageNumber(4);
79
- searchDependenciesHelper.setFilterKeyValues(new Map([
80
- [FilterKey.DURATION, [duration]]
81
- ]));
82
- const result = await durationPolicy.shouldIndex();
83
- expect(result).toBe(false);
84
- });
85
- it('Should return false when portal is distance learning', async () => {
86
- const duration = '[720,720]'; // 2 years
87
- searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
88
- searchDependenciesHelper.setFilterKeyValues(new Map([
89
- [FilterKey.DURATION, [duration]]
90
- ]));
91
- const result = await durationPolicy.shouldIndex();
92
- expect(result).toBe(false);
93
- });
94
- });
95
- describe('generateUrls', () => {
96
- let sitemapDependenciesHelper;
97
- let durationPolicy;
98
- beforeEach(() => {
99
- sitemapDependenciesHelper = new SitemapDependencies();
100
- sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
101
- durationPolicy = new Duration(sitemapDependenciesHelper.dependencies);
102
- // Mock DurationPresenter with all durations including ones that should be filtered out
103
- DurationPresenter.getInstance = vi.fn().mockReturnValue({
104
- getFragments: vi.fn().mockReturnValue([
105
- { id: '[360,360]', path: '1-year' }, // Should be included
106
- { id: '[720,720]', path: '2-years' }, // Should be included
107
- { id: '[1080,1080]', path: '3-years' }, // Should be filtered out
108
- { id: '[1440,1440]', path: '4-years' }, // Should be filtered out
109
- { id: '[-1,359]', path: 'less-than-1-year' } // Should be filtered out
110
- ])
111
- });
112
- });
113
- afterEach(() => {
114
- sitemapDependenciesHelper.resetMocks();
115
- });
116
- it('Should generate URLs only for 1 year and 2 years durations', async () => {
117
- // Mock the checkRulesForSitemap to return true for allowed durations
118
- const resultMap = new Map([
119
- [`${FilterKey.DURATION}:[360,360]`, true], // 1 year
120
- [`${FilterKey.DURATION}:[720,720]`, true], // 2 years
121
- [`${FilterKey.DURATION}:[1080,1080]`, true], // Won't be used due to filtering
122
- [`${FilterKey.DURATION}:[1440,1440]`, true], // Won't be used due to filtering
123
- [`${FilterKey.DURATION}:[-1,359]`, true] // Won't be used due to filtering
124
- ]);
125
- sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
126
- const urls = await durationPolicy.generateUrls();
127
- // Should only include 1 year and 2 years
128
- expect(urls).toHaveLength(2);
129
- expect(urls).toContain('1-year');
130
- expect(urls).toContain('2-years');
131
- // Should exclude other durations
132
- expect(urls).not.toContain('3-years');
133
- expect(urls).not.toContain('4-years');
134
- expect(urls).not.toContain('less-than-1-year');
135
- });
136
- it('Should exclude URLs when rule checks fail', async () => {
137
- const resultMap = new Map([
138
- [`${FilterKey.DURATION}:[360,360]`, false], // 1 year fails
139
- [`${FilterKey.DURATION}:[720,720]`, true] // 2 years passes
140
- ]);
141
- sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
142
- const urls = await durationPolicy.generateUrls();
143
- // Should only include 2 years
144
- expect(urls).toHaveLength(1);
145
- expect(urls).toContain('2-years');
146
- expect(urls).not.toContain('1-year');
147
- });
148
- it('Should handle empty duration fragments', async () => {
149
- DurationPresenter.getInstance.mockReturnValueOnce({
150
- getFragments: vi.fn().mockReturnValue([])
151
- });
152
- sitemapDependenciesHelper.mockCheckRulesForSitemap();
153
- const urls = await durationPolicy.generateUrls();
154
- expect(urls).toHaveLength(0);
155
- });
156
- it('Should verify filtering logic with exact duration IDs', async () => {
157
- // Test that only specific duration IDs are allowed
158
- const mockFragments = [
159
- { id: '[360,360]', path: '1-year' },
160
- { id: '[720,720]', path: '2-years' },
161
- { id: '[900,900]', path: 'other-duration' } // Should be filtered out
162
- ];
163
- DurationPresenter.getInstance.mockReturnValueOnce({
164
- getFragments: vi.fn().mockReturnValue(mockFragments)
165
- });
166
- const resultMap = new Map([
167
- [`${FilterKey.DURATION}:[360,360]`, true],
168
- [`${FilterKey.DURATION}:[720,720]`, true],
169
- [`${FilterKey.DURATION}:[900,900]`, true] // Won't be used
170
- ]);
171
- sitemapDependenciesHelper.mockCheckRulesForSitemap(resultMap);
172
- const urls = await durationPolicy.generateUrls();
173
- expect(urls).toHaveLength(2);
174
- expect(urls).toContain('1-year');
175
- expect(urls).toContain('2-years');
176
- expect(urls).not.toContain('other-duration');
177
- });
178
- });
179
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,117 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { FilterKey } from '@studyportals/search-filters/server-side';
3
- import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
4
- import { Format } from '@/programmes/policies/Format';
5
- import { PortalType } from '@studyportals/domain-client';
6
- import { SitemapDependencies } from '../utils/SitemapDependencies.util.mjs';
7
- import { FormatPresenter } from '@/presenters/FormatPresenter';
8
- describe('Policy:Format', () => {
9
- describe('shouldIndex', () => {
10
- let searchDependenciesHelper;
11
- let formatPolicy;
12
- beforeEach(() => {
13
- searchDependenciesHelper = new SearchDependencies();
14
- formatPolicy = new Format(searchDependenciesHelper.dependencies);
15
- searchDependenciesHelper.setResultsCount(10);
16
- searchDependenciesHelper.setPageNumber(1);
17
- searchDependenciesHelper.setPortalType(PortalType.BACHELOR);
18
- });
19
- it('Should return true when fulltime format is selected', async () => {
20
- const format = 'fulltime';
21
- searchDependenciesHelper.setFilterKeyValues(new Map([
22
- [FilterKey.ATTENDANCE, [format]]
23
- ]));
24
- const result = await formatPolicy.shouldIndex();
25
- expect(result).toBe(true);
26
- });
27
- it('Should return true when parttime format is selected', async () => {
28
- const format = 'parttime';
29
- searchDependenciesHelper.setFilterKeyValues(new Map([
30
- [FilterKey.ATTENDANCE, [format]]
31
- ]));
32
- const result = await formatPolicy.shouldIndex();
33
- expect(result).toBe(true);
34
- });
35
- it('Should return false when multiple formats are selected', async () => {
36
- const firstFormat = 'fulltime';
37
- const secondFormat = 'parttime';
38
- searchDependenciesHelper.setFilterKeyValues(new Map([
39
- [FilterKey.ATTENDANCE, [firstFormat, secondFormat]]
40
- ]));
41
- const result = await formatPolicy.shouldIndex();
42
- expect(result).toBe(false);
43
- });
44
- it('Should return false when no format is selected', async () => {
45
- searchDependenciesHelper.setFilterKeyValues(new Map());
46
- const result = await formatPolicy.shouldIndex();
47
- expect(result).toBe(false);
48
- });
49
- it('Should return false when other filters are selected', async () => {
50
- const format = 'fulltime';
51
- const countryId = '30'; // UK
52
- searchDependenciesHelper.setFilterKeyValues(new Map([
53
- [FilterKey.ATTENDANCE, [format]],
54
- [FilterKey.COUNTRY, [countryId]]
55
- ]));
56
- const result = await formatPolicy.shouldIndex();
57
- expect(result).toBe(false);
58
- });
59
- it('Should return false when number of results is less than 7', async () => {
60
- const format = 'parttime';
61
- searchDependenciesHelper.setResultsCount(6);
62
- searchDependenciesHelper.setFilterKeyValues(new Map([
63
- [FilterKey.ATTENDANCE, [format]]
64
- ]));
65
- const result = await formatPolicy.shouldIndex();
66
- expect(result).toBe(false);
67
- });
68
- it('Should return false when page number is higher than 2', async () => {
69
- const format = 'fulltime';
70
- searchDependenciesHelper.setPageNumber(4);
71
- searchDependenciesHelper.setFilterKeyValues(new Map([
72
- [FilterKey.ATTENDANCE, [format]]
73
- ]));
74
- const result = await formatPolicy.shouldIndex();
75
- expect(result).toBe(false);
76
- });
77
- it('Should return false when portal is distance learning', async () => {
78
- const format = 'parttime';
79
- searchDependenciesHelper.setPortalType(PortalType.DISTANCE_LEARNING);
80
- searchDependenciesHelper.setFilterKeyValues(new Map([
81
- [FilterKey.ATTENDANCE, [format]]
82
- ]));
83
- const result = await formatPolicy.shouldIndex();
84
- expect(result).toBe(false);
85
- });
86
- });
87
- describe('generateUrls', () => {
88
- let sitemapDependenciesHelper;
89
- let formatPolicy;
90
- beforeEach(() => {
91
- sitemapDependenciesHelper = new SitemapDependencies();
92
- sitemapDependenciesHelper.setProgrammeCount(10); // More than 7 programs
93
- formatPolicy = new Format(sitemapDependenciesHelper.dependencies);
94
- // Mock FormatPresenter with all formats including ones that should be filtered out
95
- FormatPresenter.getInstance = vi.fn().mockReturnValue({
96
- getFragments: vi.fn().mockReturnValue([
97
- { id: 'fulltime', path: 'full-time' },
98
- { id: 'parttime', path: 'part-time' },
99
- { id: 'online', path: 'online' }, // Should be filtered out
100
- { id: 'blended', path: 'blended' }, // Should be filtered out
101
- { id: 'face2face', path: 'on-campus' } // Should be filtered out
102
- ])
103
- });
104
- });
105
- afterEach(() => {
106
- sitemapDependenciesHelper.resetMocks();
107
- });
108
- it('Should handle empty format fragments', async () => {
109
- FormatPresenter.getInstance.mockReturnValueOnce({
110
- getFragments: vi.fn().mockReturnValue([])
111
- });
112
- sitemapDependenciesHelper.mockCheckRulesForSitemap();
113
- const urls = await formatPolicy.generateUrls();
114
- expect(urls).toHaveLength(0);
115
- });
116
- });
117
- });
@@ -1,320 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import { FilterKey } from '@studyportals/search-filters/server-side';
3
- import { SearchDependencies } from '../utils/SearchDependencies.util.mjs';
4
- import { PortalType } from '@studyportals/domain-client';
5
- // Import all policies to validate new rules
6
- import { Format } from '@/programmes/policies/Format';
7
- import { Degree } from '@/programmes/policies/Degree';
8
- import { DegreeFormat } from '@/programmes/policies/DegreeFormat';
9
- import { AttendanceDegree } from '@/programmes/policies/AttendanceDegree';
10
- import { Duration } from '@/programmes/policies/Duration';
11
- import { DegreeDuration } from '@/programmes/policies/DegreeDuration';
12
- import { AttendanceDuration } from '@/programmes/policies/AttendanceDuration';
13
- import { AttendanceFormat } from '@/programmes/policies/AttendanceFormat';
14
- import { AttendanceContinent } from '@/programmes/policies/AttendanceContinent';
15
- import { ContinentFormat } from '@/programmes/policies/ContinentFormat';
16
- import { DegreeTuitionFee } from '@/programmes/policies/DegreeTuitionFee';
17
- import { DegreeContinent } from '@/programmes/policies/DegreeContinent';
18
- import { TuitionFeeAttendance } from '@/programmes/policies/TuitionFeeAttendance';
19
- import { DegreeTuitionFeeArea } from '@/programmes/policies/DegreeTuitionFeeArea';
20
- import { DegreeTuitionFeeContinent } from '@/programmes/policies/DegreeTuitionFeeContinent';
21
- import { SpecialProgrammes } from '@/programmes/policies/SpecialProgrammes';
22
- import { DisciplineContinentAttendance } from '@/programmes/policies/DisciplineContinentAttendance';
23
- import { DisciplineCountryAttendance } from '@/programmes/policies/DisciplineCountryAttendance';
24
- import { DisciplineCountryFormat } from '@/programmes/policies/DisciplineCountryFormat';
25
- import { DegreeSpecialProgrammes } from '@/programmes/policies/DegreeSpecialProgrammes';
26
- import { DegreeAttendanceSpecialProgrammes } from '@/programmes/policies/DegreeAttendanceSpecialProgrammes';
27
- import { ContinentSpecialProgrammes } from '@/programmes/policies';
28
- /**
29
- * Test suite to validate that all new indexing rules from new-rules.md are properly implemented
30
- * This ensures we match the requirements exactly as specified
31
- */
32
- describe('New Rules Validation (from new-rules.md)', () => {
33
- let searchDependenciesHelper;
34
- beforeEach(() => {
35
- searchDependenciesHelper = new SearchDependencies();
36
- searchDependenciesHelper.setResultsCount(10);
37
- searchDependenciesHelper.setPageNumber(1);
38
- searchDependenciesHelper.setPortalType(PortalType.BACHELOR);
39
- });
40
- describe('Format Rules (Rules 1-2)', () => {
41
- it('Rule 1: Full-time (Format) should be indexable', async () => {
42
- const formatPolicy = new Format(searchDependenciesHelper.dependencies);
43
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.ATTENDANCE, ['fulltime']]]));
44
- const result = await formatPolicy.shouldIndex();
45
- expect(result).toBe(true);
46
- });
47
- it('Rule 2: Part-time (Format) should be indexable', async () => {
48
- const formatPolicy = new Format(searchDependenciesHelper.dependencies);
49
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.ATTENDANCE, ['parttime']]]));
50
- const result = await formatPolicy.shouldIndex();
51
- expect(result).toBe(true);
52
- });
53
- });
54
- describe('Degree Rules (Rules 3-9)', () => {
55
- it('Rule 3: Degree should be indexable', async () => {
56
- const degreePolicy = new Degree(searchDependenciesHelper.dependencies);
57
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DEGREE_TYPE, ['mba']]]));
58
- const result = await degreePolicy.shouldIndex();
59
- expect(result).toBe(true);
60
- });
61
- it('Rule 4: Part-time + Degree should be indexable', async () => {
62
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
63
- const degreeFormatPolicy = new DegreeFormat(searchDependenciesHelper.dependencies);
64
- searchDependenciesHelper.setFilterKeyValues(new Map([
65
- [FilterKey.ATTENDANCE, ['parttime']],
66
- [FilterKey.DEGREE_TYPE, ['mba']]
67
- ]));
68
- const result = await degreeFormatPolicy.shouldIndex();
69
- expect(result).toBe(true);
70
- });
71
- it('Rule 7: Full-time + Degree should be indexable', async () => {
72
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
73
- const degreeFormatPolicy = new DegreeFormat(searchDependenciesHelper.dependencies);
74
- searchDependenciesHelper.setFilterKeyValues(new Map([
75
- [FilterKey.ATTENDANCE, ['fulltime']],
76
- [FilterKey.DEGREE_TYPE, ['msc']]
77
- ]));
78
- const result = await degreeFormatPolicy.shouldIndex();
79
- expect(result).toBe(true);
80
- });
81
- it('Rule 8: Tuition Fee + Degree should be indexable', async () => {
82
- const degreeTuitionFeePolicy = new DegreeTuitionFee(searchDependenciesHelper.dependencies);
83
- searchDependenciesHelper.setFilterKeyValues(new Map([
84
- [FilterKey.TUITION_FEE, ['[0,2500]']],
85
- [FilterKey.DEGREE_TYPE, ['phd']]
86
- ]));
87
- const result = await degreeTuitionFeePolicy.shouldIndex();
88
- expect(result).toBe(true);
89
- });
90
- it('Rule 9: Continent + Degree should be indexable', async () => {
91
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
92
- const degreeContinentPolicy = new DegreeContinent(searchDependenciesHelper.dependencies);
93
- searchDependenciesHelper.setFilterKeyValues(new Map([
94
- [FilterKey.CONTINENT, ['europe']],
95
- [FilterKey.DEGREE_TYPE, ['mba']]
96
- ]));
97
- const result = await degreeContinentPolicy.shouldIndex();
98
- expect(result).toBe(true);
99
- });
100
- });
101
- describe('Duration Rules (Rules 11-12, 17-22, 28-30)', () => {
102
- it('Rule 11: 1 year (Duration) should be indexable', async () => {
103
- const durationPolicy = new Duration(searchDependenciesHelper.dependencies);
104
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DURATION, ['[360,360]']]]));
105
- const result = await durationPolicy.shouldIndex();
106
- expect(result).toBe(true);
107
- });
108
- it('Rule 17: 2 years (Duration) should be indexable', async () => {
109
- const durationPolicy = new Duration(searchDependenciesHelper.dependencies);
110
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DURATION, ['[720,720]']]]));
111
- const result = await durationPolicy.shouldIndex();
112
- expect(result).toBe(true);
113
- });
114
- it('Rule 12: Online Learning + 1 year should be indexable', async () => {
115
- const attendanceDurationPolicy = new AttendanceDuration(searchDependenciesHelper.dependencies);
116
- searchDependenciesHelper.setFilterKeyValues(new Map([
117
- [FilterKey.DELIVERY_METHOD, ['online']],
118
- [FilterKey.DURATION, ['[360,360]']]
119
- ]));
120
- const result = await attendanceDurationPolicy.shouldIndex();
121
- expect(result).toBe(true);
122
- });
123
- it('Rule 21: Degree + 2 years should be indexable', async () => {
124
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
125
- const degreeDurationPolicy = new DegreeDuration(searchDependenciesHelper.dependencies);
126
- searchDependenciesHelper.setFilterKeyValues(new Map([
127
- [FilterKey.DEGREE_TYPE, ['msc']],
128
- [FilterKey.DURATION, ['[720,720]']]
129
- ]));
130
- const result = await degreeDurationPolicy.shouldIndex();
131
- expect(result).toBe(true);
132
- });
133
- it('Rule 29: Degree + 1 year should be indexable', async () => {
134
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
135
- const degreeDurationPolicy = new DegreeDuration(searchDependenciesHelper.dependencies);
136
- searchDependenciesHelper.setFilterKeyValues(new Map([
137
- [FilterKey.DEGREE_TYPE, ['mba']],
138
- [FilterKey.DURATION, ['[360,360]']]
139
- ]));
140
- const result = await degreeDurationPolicy.shouldIndex();
141
- expect(result).toBe(true);
142
- });
143
- });
144
- describe('Attendance Combination Rules (Rules 10, 16, 18-20, 25-27)', () => {
145
- it('Rule 10: Tuition Fee + Online Learning should be indexable', async () => {
146
- const attendanceTuitionFeePolicy = new TuitionFeeAttendance(searchDependenciesHelper.dependencies);
147
- searchDependenciesHelper.setFilterKeyValues(new Map([
148
- [FilterKey.TUITION_FEE, ['[0,2500]']],
149
- [FilterKey.DELIVERY_METHOD, ['online']]
150
- ]));
151
- const result = await attendanceTuitionFeePolicy.shouldIndex();
152
- expect(result).toBe(true);
153
- });
154
- it('Rule 16: Part-time + Online Learning should be indexable', async () => {
155
- const attendanceFormatPolicy = new AttendanceFormat(searchDependenciesHelper.dependencies);
156
- searchDependenciesHelper.setFilterKeyValues(new Map([
157
- [FilterKey.ATTENDANCE, ['parttime']],
158
- [FilterKey.DELIVERY_METHOD, ['online']]
159
- ]));
160
- const result = await attendanceFormatPolicy.shouldIndex();
161
- expect(result).toBe(true);
162
- });
163
- it('Rule 18: Blended Learning + Degree should be indexable', async () => {
164
- searchDependenciesHelper.setPortalType(PortalType.PHD);
165
- const attendanceDegreePolicy = new AttendanceDegree(searchDependenciesHelper.dependencies);
166
- searchDependenciesHelper.setFilterKeyValues(new Map([
167
- [FilterKey.DELIVERY_METHOD, ['blended']],
168
- [FilterKey.DEGREE_TYPE, ['phd']]
169
- ]));
170
- const result = await attendanceDegreePolicy.shouldIndex();
171
- expect(result).toBe(true);
172
- });
173
- it('Rule 19: Continent + Online Learning should be indexable', async () => {
174
- const attendanceContinentPolicy = new AttendanceContinent(searchDependenciesHelper.dependencies);
175
- searchDependenciesHelper.setFilterKeyValues(new Map([
176
- [FilterKey.CONTINENT, ['europe']],
177
- [FilterKey.DELIVERY_METHOD, ['online']]
178
- ]));
179
- const result = await attendanceContinentPolicy.shouldIndex();
180
- expect(result).toBe(true);
181
- });
182
- it('Rule 20: Continent + Part-time should be indexable', async () => {
183
- const continentFormatPolicy = new ContinentFormat(searchDependenciesHelper.dependencies);
184
- searchDependenciesHelper.setFilterKeyValues(new Map([
185
- [FilterKey.CONTINENT, ['europe']],
186
- [FilterKey.ATTENDANCE, ['parttime']]
187
- ]));
188
- const result = await continentFormatPolicy.shouldIndex();
189
- expect(result).toBe(true);
190
- });
191
- it('Rule 25: Full-time + Online Learning should be indexable', async () => {
192
- const attendanceFormatPolicy = new AttendanceFormat(searchDependenciesHelper.dependencies);
193
- searchDependenciesHelper.setFilterKeyValues(new Map([
194
- [FilterKey.ATTENDANCE, ['fulltime']],
195
- [FilterKey.DELIVERY_METHOD, ['online']]
196
- ]));
197
- const result = await attendanceFormatPolicy.shouldIndex();
198
- expect(result).toBe(true);
199
- });
200
- });
201
- describe('Complex Combination Rules (Rules 13-15, 27-28)', () => {
202
- it('Rule 13: Region + Tuition Fee + Degree - Policy exists (DegreeTuitionFeeArea)', async () => {
203
- // This test verifies the policy exists and can be instantiated
204
- // The actual rule validation may require additional filters based on implementation
205
- const degreeTuitionFeeAreaPolicy = new DegreeTuitionFeeArea(searchDependenciesHelper.dependencies);
206
- expect(degreeTuitionFeeAreaPolicy).toBeDefined();
207
- expect(degreeTuitionFeeAreaPolicy.name).toBe('Degree Area Tuition fee Policy');
208
- });
209
- it('Rule 15: Continent + Tuition Fee + Degree should be indexable', async () => {
210
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
211
- const degreeContinentTuitionFeePolicy = new DegreeTuitionFeeContinent(searchDependenciesHelper.dependencies);
212
- searchDependenciesHelper.setFilterKeyValues(new Map([
213
- [FilterKey.CONTINENT, ['europe']],
214
- [FilterKey.TUITION_FEE, ['[0,2500]']],
215
- [FilterKey.DEGREE_TYPE, ['msc']]
216
- ]));
217
- const result = await degreeContinentTuitionFeePolicy.shouldIndex();
218
- expect(result).toBe(true);
219
- });
220
- });
221
- describe('Special Programmes Rules (Rules 22-24, 30, 34-35)', () => {
222
- it('Rule 24: Executive Programmes (Special) should be indexable', async () => {
223
- const specialProgrammesPolicy = new SpecialProgrammes(searchDependenciesHelper.dependencies);
224
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.SPECIAL_PROGRAMMES, ['executive']]]));
225
- const result = await specialProgrammesPolicy.shouldIndex();
226
- expect(result).toBe(true);
227
- });
228
- it('Rule 34: MBA + Executive Programmes should be indexable', async () => {
229
- const degreeSpecialProgrammesPolicy = new DegreeSpecialProgrammes(searchDependenciesHelper.dependencies);
230
- searchDependenciesHelper.setFilterKeyValues(new Map([
231
- [FilterKey.DEGREE_TYPE, ['mba']],
232
- [FilterKey.SPECIAL_PROGRAMMES, ['executive']]
233
- ]));
234
- const result = await degreeSpecialProgrammesPolicy.shouldIndex();
235
- expect(result).toBe(true);
236
- });
237
- it('Rule 35: MBA + Executive Programmes + online - Policy exists (DegreeAttendanceSpecialProgrammes)', async () => {
238
- // This test verifies the policy exists and implements the required functionality
239
- // The policy filters for MBA + Executive programs and uses OnlineAttendanceRule
240
- const degreeAttendanceSpecialProgrammesPolicy = new DegreeAttendanceSpecialProgrammes(searchDependenciesHelper.dependencies);
241
- expect(degreeAttendanceSpecialProgrammesPolicy).toBeDefined();
242
- expect(degreeAttendanceSpecialProgrammesPolicy.name).toBe('Degree Attendance Special Programmes Policy');
243
- expect(degreeAttendanceSpecialProgrammesPolicy.description).toContain('online');
244
- });
245
- });
246
- describe('Discipline Combination Rules (Rules 14, 32-33)', () => {
247
- it('Rule 14: Continent + Discipline + Online should be indexable', async () => {
248
- const disciplineContinentAttendancePolicy = new DisciplineContinentAttendance(searchDependenciesHelper.dependencies);
249
- searchDependenciesHelper.setFilterKeyValues(new Map([
250
- [FilterKey.CONTINENT, ['europe']],
251
- [FilterKey.DISCIPLINES, ['business']],
252
- [FilterKey.DELIVERY_METHOD, ['online']]
253
- ]));
254
- const result = await disciplineContinentAttendancePolicy.shouldIndex();
255
- expect(result).toBe(true);
256
- });
257
- it('Rule 32: Discipline + Country + Online learning should be indexable', async () => {
258
- const disciplineCountryAttendancePolicy = new DisciplineCountryAttendance(searchDependenciesHelper.dependencies);
259
- searchDependenciesHelper.setFilterKeyValues(new Map([
260
- [FilterKey.DISCIPLINES, ['engineering']],
261
- [FilterKey.COUNTRY, ['30']], // UK
262
- [FilterKey.DELIVERY_METHOD, ['online']]
263
- ]));
264
- const result = await disciplineCountryAttendancePolicy.shouldIndex();
265
- expect(result).toBe(true);
266
- });
267
- it('Rule 33: Discipline + Country + Part-time should be indexable', async () => {
268
- const disciplineCountryFormatPolicy = new DisciplineCountryFormat(searchDependenciesHelper.dependencies);
269
- searchDependenciesHelper.setFilterKeyValues(new Map([
270
- [FilterKey.DISCIPLINES, ['medicine']],
271
- [FilterKey.COUNTRY, ['56']], // USA
272
- [FilterKey.ATTENDANCE, ['parttime']]
273
- ]));
274
- const result = await disciplineCountryFormatPolicy.shouldIndex();
275
- expect(result).toBe(true);
276
- });
277
- });
278
- describe('Verify Policy Behavior', () => {
279
- it('Format policy allows any attendance type in shouldIndex (filtering in generateUrls)', async () => {
280
- const formatPolicy = new Format(searchDependenciesHelper.dependencies);
281
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.ATTENDANCE, ['online']]]) // This passes shouldIndex but gets filtered in generateUrls
282
- );
283
- const result = await formatPolicy.shouldIndex();
284
- expect(result).toBe(true); // Basic validation passes
285
- });
286
- it('Duration policy allows 1 year duration in shouldIndex (filtering in generateUrls)', async () => {
287
- const durationPolicy = new Duration(searchDependenciesHelper.dependencies);
288
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DURATION, ['[360,360]']]]) // 1 year - allowed in shouldIndex, filtered in generateUrls
289
- );
290
- const result = await durationPolicy.shouldIndex();
291
- expect(result).toBe(true); // Basic validation passes
292
- });
293
- it('Duration policy allows 2 years duration in shouldIndex (filtering in generateUrls)', async () => {
294
- const durationPolicy = new Duration(searchDependenciesHelper.dependencies);
295
- searchDependenciesHelper.setFilterKeyValues(new Map([[FilterKey.DURATION, ['[720,720]']]]) // 2 years - allowed in shouldIndex, filtered in generateUrls
296
- );
297
- const result = await durationPolicy.shouldIndex();
298
- expect(result).toBe(true); // Basic validation passes
299
- });
300
- it('AttendanceDegree allows blended in shouldIndex (filtering in generateUrls)', async () => {
301
- searchDependenciesHelper.setPortalType(PortalType.MASTER);
302
- const attendanceDegreePolicy = new AttendanceDegree(searchDependenciesHelper.dependencies);
303
- searchDependenciesHelper.setFilterKeyValues(new Map([
304
- [FilterKey.DELIVERY_METHOD, ['blended']], // Allowed in shouldIndex, filtered in generateUrls
305
- [FilterKey.DEGREE_TYPE, ['mba']]
306
- ]));
307
- const result = await attendanceDegreePolicy.shouldIndex();
308
- expect(result).toBe(true); // Basic validation passes
309
- });
310
- it('AttendanceDegree allows blended in shouldIndex (filtering in generateUrls)', async () => {
311
- const continentSpecialProgrammesPolicy = new ContinentSpecialProgrammes(searchDependenciesHelper.dependencies);
312
- searchDependenciesHelper.setFilterKeyValues(new Map([
313
- [FilterKey.SPECIAL_PROGRAMMES, ['erasmus']], // Allowed in shouldIndex, filtered in generateUrls
314
- [FilterKey.CONTINENT, ['1']]
315
- ]));
316
- const result = await continentSpecialProgrammesPolicy.shouldIndex();
317
- expect(result).toBe(true); // Basic validation passes
318
- });
319
- });
320
- });