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