revised_holidays 9.0.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 (382) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +25 -0
  3. data/CHANGELOG.md +446 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE +21 -0
  7. data/Makefile +45 -0
  8. data/README.md +337 -0
  9. data/Rakefile +109 -0
  10. data/bin/console +7 -0
  11. data/bin/setup +6 -0
  12. data/definitions/.github/workflows/ruby.yml +25 -0
  13. data/definitions/.gitignore +5 -0
  14. data/definitions/CHANGELOG.md +352 -0
  15. data/definitions/Gemfile +6 -0
  16. data/definitions/LICENSE +21 -0
  17. data/definitions/METHODS.yml +26 -0
  18. data/definitions/Makefile +9 -0
  19. data/definitions/README.md +22 -0
  20. data/definitions/ar.yaml +268 -0
  21. data/definitions/at.yaml +116 -0
  22. data/definitions/au.yaml +907 -0
  23. data/definitions/be_fr.yaml +153 -0
  24. data/definitions/be_nl.yaml +153 -0
  25. data/definitions/bg.yaml +186 -0
  26. data/definitions/br.yaml +178 -0
  27. data/definitions/ca.yaml +969 -0
  28. data/definitions/ch.yaml +277 -0
  29. data/definitions/cl.yaml +294 -0
  30. data/definitions/co.yaml +437 -0
  31. data/definitions/cr.yaml +100 -0
  32. data/definitions/cz.yaml +137 -0
  33. data/definitions/de.yaml +401 -0
  34. data/definitions/dk.yaml +220 -0
  35. data/definitions/doc/CONTRIBUTING.md +44 -0
  36. data/definitions/doc/MAINTAINERS.md +39 -0
  37. data/definitions/doc/SYNTAX.md +435 -0
  38. data/definitions/doc/architecture/README.md +15 -0
  39. data/definitions/doc/architecture/adr-001.md +86 -0
  40. data/definitions/doc/architecture/adr-002.md +64 -0
  41. data/definitions/ecbtarget.yaml +74 -0
  42. data/definitions/ee.yaml +123 -0
  43. data/definitions/es.yaml +495 -0
  44. data/definitions/federalreserve.yaml +389 -0
  45. data/definitions/federalreservebanks.yaml +821 -0
  46. data/definitions/fedex.yaml +102 -0
  47. data/definitions/fi.yaml +234 -0
  48. data/definitions/fr.yaml +157 -0
  49. data/definitions/gb.yaml +565 -0
  50. data/definitions/ge.yaml +158 -0
  51. data/definitions/gr.yaml +158 -0
  52. data/definitions/hk.yaml +287 -0
  53. data/definitions/hr.yaml +171 -0
  54. data/definitions/hu.yaml +156 -0
  55. data/definitions/ie.yaml +172 -0
  56. data/definitions/index.yaml +80 -0
  57. data/definitions/is.yaml +247 -0
  58. data/definitions/it.yaml +246 -0
  59. data/definitions/jp.yaml +761 -0
  60. data/definitions/ke.yaml +107 -0
  61. data/definitions/kr.yaml +166 -0
  62. data/definitions/kz.yaml +128 -0
  63. data/definitions/li.yaml +154 -0
  64. data/definitions/lib/validation/custom_method_validator.rb +38 -0
  65. data/definitions/lib/validation/definition_validator.rb +35 -0
  66. data/definitions/lib/validation/error.rb +11 -0
  67. data/definitions/lib/validation/month_validator.rb +58 -0
  68. data/definitions/lib/validation/run.rb +66 -0
  69. data/definitions/lib/validation/test_validator.rb +83 -0
  70. data/definitions/lt.yaml +198 -0
  71. data/definitions/lu.yaml +123 -0
  72. data/definitions/lv.yaml +229 -0
  73. data/definitions/ma.yaml +96 -0
  74. data/definitions/mt_en.yaml +131 -0
  75. data/definitions/mt_mt.yaml +131 -0
  76. data/definitions/mx.yaml +160 -0
  77. data/definitions/my.yaml +79 -0
  78. data/definitions/nerc.yaml +94 -0
  79. data/definitions/ng.yaml +97 -0
  80. data/definitions/nl.yaml +127 -0
  81. data/definitions/no.yaml +169 -0
  82. data/definitions/northamericainformal.yaml +105 -0
  83. data/definitions/nyse.yaml +137 -0
  84. data/definitions/nz.yaml +346 -0
  85. data/definitions/pe.yaml +208 -0
  86. data/definitions/ph.yaml +130 -0
  87. data/definitions/pl.yaml +796 -0
  88. data/definitions/pt.yaml +187 -0
  89. data/definitions/ro.yaml +240 -0
  90. data/definitions/rs_cyrl.yaml +129 -0
  91. data/definitions/rs_la.yaml +129 -0
  92. data/definitions/ru.yaml +108 -0
  93. data/definitions/se.yaml +238 -0
  94. data/definitions/sg.yaml +89 -0
  95. data/definitions/si.yaml +162 -0
  96. data/definitions/sk.yaml +154 -0
  97. data/definitions/spec/coverage_report.rb +7 -0
  98. data/definitions/spec/data/invalid/months/malformed/bad.yaml +15 -0
  99. data/definitions/spec/data/invalid/months/missing/no_months.yaml +9 -0
  100. data/definitions/spec/data/valid/simple.yaml +15 -0
  101. data/definitions/spec/spec_helper.rb +7 -0
  102. data/definitions/spec/validation/custom_method_validator_spec.rb +60 -0
  103. data/definitions/spec/validation/definition_validator_spec.rb +43 -0
  104. data/definitions/spec/validation/month_validator_spec.rb +175 -0
  105. data/definitions/spec/validation/test_validator_spec.rb +169 -0
  106. data/definitions/th.yaml +111 -0
  107. data/definitions/tn.yaml +83 -0
  108. data/definitions/tr.yaml +174 -0
  109. data/definitions/ua.yaml +161 -0
  110. data/definitions/unitednations.yaml +189 -0
  111. data/definitions/ups.yaml +102 -0
  112. data/definitions/us.yaml +965 -0
  113. data/definitions/ve.yaml +118 -0
  114. data/definitions/vi.yaml +54 -0
  115. data/definitions/za.yaml +139 -0
  116. data/doc/CONTRIBUTING.md +72 -0
  117. data/doc/MAINTAINERS.md +81 -0
  118. data/doc/REFERENCES +19 -0
  119. data/lib/generated_definitions/MANIFEST +83 -0
  120. data/lib/generated_definitions/REGIONS.rb +6 -0
  121. data/lib/generated_definitions/ar.rb +60 -0
  122. data/lib/generated_definitions/at.rb +37 -0
  123. data/lib/generated_definitions/au.rb +177 -0
  124. data/lib/generated_definitions/be.rb +42 -0
  125. data/lib/generated_definitions/be_fr.rb +36 -0
  126. data/lib/generated_definitions/be_nl.rb +36 -0
  127. data/lib/generated_definitions/bg.rb +53 -0
  128. data/lib/generated_definitions/br.rb +37 -0
  129. data/lib/generated_definitions/ca.rb +88 -0
  130. data/lib/generated_definitions/ch.rb +95 -0
  131. data/lib/generated_definitions/cl.rb +71 -0
  132. data/lib/generated_definitions/co.rb +121 -0
  133. data/lib/generated_definitions/cr.rb +35 -0
  134. data/lib/generated_definitions/cz.rb +37 -0
  135. data/lib/generated_definitions/de.rb +65 -0
  136. data/lib/generated_definitions/dk.rb +48 -0
  137. data/lib/generated_definitions/ecbtarget.rb +30 -0
  138. data/lib/generated_definitions/ee.rb +36 -0
  139. data/lib/generated_definitions/el.rb +38 -0
  140. data/lib/generated_definitions/es.rb +56 -0
  141. data/lib/generated_definitions/europe.rb +638 -0
  142. data/lib/generated_definitions/federalreserve.rb +35 -0
  143. data/lib/generated_definitions/federalreservebanks.rb +35 -0
  144. data/lib/generated_definitions/fedex.rb +36 -0
  145. data/lib/generated_definitions/fi.rb +61 -0
  146. data/lib/generated_definitions/fr.rb +39 -0
  147. data/lib/generated_definitions/gb.rb +51 -0
  148. data/lib/generated_definitions/ge.rb +41 -0
  149. data/lib/generated_definitions/gr.rb +38 -0
  150. data/lib/generated_definitions/hk.rb +106 -0
  151. data/lib/generated_definitions/hr.rb +40 -0
  152. data/lib/generated_definitions/hu.rb +35 -0
  153. data/lib/generated_definitions/ie.rb +33 -0
  154. data/lib/generated_definitions/is.rb +60 -0
  155. data/lib/generated_definitions/it.rb +45 -0
  156. data/lib/generated_definitions/jp.rb +166 -0
  157. data/lib/generated_definitions/ke.rb +34 -0
  158. data/lib/generated_definitions/kr.rb +40 -0
  159. data/lib/generated_definitions/kz.rb +38 -0
  160. data/lib/generated_definitions/li.rb +44 -0
  161. data/lib/generated_definitions/lt.rb +38 -0
  162. data/lib/generated_definitions/lu.rb +35 -0
  163. data/lib/generated_definitions/lv.rb +56 -0
  164. data/lib/generated_definitions/ma.rb +33 -0
  165. data/lib/generated_definitions/mt_en.rb +38 -0
  166. data/lib/generated_definitions/mt_mt.rb +38 -0
  167. data/lib/generated_definitions/mx.rb +54 -0
  168. data/lib/generated_definitions/my.rb +30 -0
  169. data/lib/generated_definitions/nerc.rb +30 -0
  170. data/lib/generated_definitions/ng.rb +33 -0
  171. data/lib/generated_definitions/nl.rb +37 -0
  172. data/lib/generated_definitions/no.rb +40 -0
  173. data/lib/generated_definitions/northamerica.rb +229 -0
  174. data/lib/generated_definitions/nyse.rb +34 -0
  175. data/lib/generated_definitions/nz.rb +105 -0
  176. data/lib/generated_definitions/pe.rb +43 -0
  177. data/lib/generated_definitions/ph.rb +50 -0
  178. data/lib/generated_definitions/pl.rb +73 -0
  179. data/lib/generated_definitions/pt.rb +40 -0
  180. data/lib/generated_definitions/ro.rb +39 -0
  181. data/lib/generated_definitions/rs_cyrl.rb +39 -0
  182. data/lib/generated_definitions/rs_la.rb +39 -0
  183. data/lib/generated_definitions/ru.rb +37 -0
  184. data/lib/generated_definitions/scandinavia.rb +166 -0
  185. data/lib/generated_definitions/se.rb +53 -0
  186. data/lib/generated_definitions/sg.rb +31 -0
  187. data/lib/generated_definitions/si.rb +39 -0
  188. data/lib/generated_definitions/sk.rb +39 -0
  189. data/lib/generated_definitions/southamerica.rb +248 -0
  190. data/lib/generated_definitions/th.rb +36 -0
  191. data/lib/generated_definitions/tn.rb +32 -0
  192. data/lib/generated_definitions/tr.rb +64 -0
  193. data/lib/generated_definitions/ua.rb +37 -0
  194. data/lib/generated_definitions/unitednations.rb +81 -0
  195. data/lib/generated_definitions/ups.rb +36 -0
  196. data/lib/generated_definitions/us.rb +153 -0
  197. data/lib/generated_definitions/ve.rb +36 -0
  198. data/lib/generated_definitions/vi.rb +29 -0
  199. data/lib/generated_definitions/za.rb +36 -0
  200. data/lib/holidays/core_extensions/date.rb +57 -0
  201. data/lib/holidays/core_extensions/time.rb +23 -0
  202. data/lib/holidays/date_calculator/day_of_month.rb +68 -0
  203. data/lib/holidays/date_calculator/easter.rb +91 -0
  204. data/lib/holidays/date_calculator/lunar_date.rb +371 -0
  205. data/lib/holidays/date_calculator/weekend_modifier.rb +80 -0
  206. data/lib/holidays/definition/context/function_processor.rb +91 -0
  207. data/lib/holidays/definition/context/generator.rb +209 -0
  208. data/lib/holidays/definition/context/load.rb +29 -0
  209. data/lib/holidays/definition/context/merger.rb +22 -0
  210. data/lib/holidays/definition/decorator/custom_method_proc.rb +28 -0
  211. data/lib/holidays/definition/decorator/custom_method_source.rb +30 -0
  212. data/lib/holidays/definition/decorator/test.rb +37 -0
  213. data/lib/holidays/definition/entity/custom_method.rb +11 -0
  214. data/lib/holidays/definition/entity/test.rb +11 -0
  215. data/lib/holidays/definition/generator/module.rb +54 -0
  216. data/lib/holidays/definition/generator/regions.rb +55 -0
  217. data/lib/holidays/definition/generator/test.rb +51 -0
  218. data/lib/holidays/definition/parser/custom_method.rb +67 -0
  219. data/lib/holidays/definition/parser/test.rb +86 -0
  220. data/lib/holidays/definition/repository/cache.rb +47 -0
  221. data/lib/holidays/definition/repository/custom_methods.rb +27 -0
  222. data/lib/holidays/definition/repository/holidays_by_month.rb +57 -0
  223. data/lib/holidays/definition/repository/proc_result_cache.rb +51 -0
  224. data/lib/holidays/definition/repository/regions.rb +46 -0
  225. data/lib/holidays/definition/validator/custom_method.rb +31 -0
  226. data/lib/holidays/definition/validator/region.rb +36 -0
  227. data/lib/holidays/definition/validator/test.rb +71 -0
  228. data/lib/holidays/errors.rb +11 -0
  229. data/lib/holidays/factory/date_calculator.rb +42 -0
  230. data/lib/holidays/factory/definition.rb +143 -0
  231. data/lib/holidays/factory/finder.rb +70 -0
  232. data/lib/holidays/finder/context/between.rb +45 -0
  233. data/lib/holidays/finder/context/dates_driver_builder.rb +64 -0
  234. data/lib/holidays/finder/context/next_holiday.rb +57 -0
  235. data/lib/holidays/finder/context/parse_options.rb +104 -0
  236. data/lib/holidays/finder/context/search.rb +111 -0
  237. data/lib/holidays/finder/context/year_holiday.rb +57 -0
  238. data/lib/holidays/finder/rules/in_region.rb +31 -0
  239. data/lib/holidays/finder/rules/year_range.rb +58 -0
  240. data/lib/holidays/load_all_definitions.rb +56 -0
  241. data/lib/holidays/version.rb +3 -0
  242. data/lib/holidays.rb +130 -0
  243. data/lib/revised_holidays.rb +1 -0
  244. data/revised_holidays.gemspec +31 -0
  245. data/test/coverage_report.rb +26 -0
  246. data/test/data/test_custom_govt_holiday_defs.yaml +5 -0
  247. data/test/data/test_custom_informal_holidays_defs.yaml +11 -0
  248. data/test/data/test_custom_year_range_holiday_defs.yaml +31 -0
  249. data/test/data/test_invalid_region.rb +15 -0
  250. data/test/data/test_multiple_custom_holiday_defs.yaml +12 -0
  251. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  252. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  253. data/test/data/test_region.rb +15 -0
  254. data/test/data/test_single_custom_holiday_defs.yaml +12 -0
  255. data/test/data/test_single_custom_holiday_with_custom_procs.yaml +28 -0
  256. data/test/defs/test_defs_ar.rb +69 -0
  257. data/test/defs/test_defs_at.rb +31 -0
  258. data/test/defs/test_defs_au.rb +233 -0
  259. data/test/defs/test_defs_be_fr.rb +45 -0
  260. data/test/defs/test_defs_be_nl.rb +45 -0
  261. data/test/defs/test_defs_bg.rb +41 -0
  262. data/test/defs/test_defs_br.rb +49 -0
  263. data/test/defs/test_defs_ca.rb +289 -0
  264. data/test/defs/test_defs_ch.rb +51 -0
  265. data/test/defs/test_defs_cl.rb +69 -0
  266. data/test/defs/test_defs_co.rb +113 -0
  267. data/test/defs/test_defs_cr.rb +29 -0
  268. data/test/defs/test_defs_cz.rb +37 -0
  269. data/test/defs/test_defs_de.rb +89 -0
  270. data/test/defs/test_defs_dk.rb +47 -0
  271. data/test/defs/test_defs_ecbtarget.rb +27 -0
  272. data/test/defs/test_defs_ee.rb +41 -0
  273. data/test/defs/test_defs_es.rb +137 -0
  274. data/test/defs/test_defs_europe.rb +1522 -0
  275. data/test/defs/test_defs_fed_ex.rb +24 -0
  276. data/test/defs/test_defs_federalreserve.rb +119 -0
  277. data/test/defs/test_defs_federalreservebanks.rb +251 -0
  278. data/test/defs/test_defs_fedex.rb +31 -0
  279. data/test/defs/test_defs_fi.rb +59 -0
  280. data/test/defs/test_defs_fr.rb +43 -0
  281. data/test/defs/test_defs_gb.rb +159 -0
  282. data/test/defs/test_defs_ge.rb +53 -0
  283. data/test/defs/test_defs_gr.rb +41 -0
  284. data/test/defs/test_defs_hk.rb +59 -0
  285. data/test/defs/test_defs_hr.rb +45 -0
  286. data/test/defs/test_defs_hu.rb +47 -0
  287. data/test/defs/test_defs_ie.rb +53 -0
  288. data/test/defs/test_defs_is.rb +51 -0
  289. data/test/defs/test_defs_it.rb +55 -0
  290. data/test/defs/test_defs_jp.rb +159 -0
  291. data/test/defs/test_defs_ke.rb +31 -0
  292. data/test/defs/test_defs_kr.rb +37 -0
  293. data/test/defs/test_defs_kz.rb +39 -0
  294. data/test/defs/test_defs_li.rb +35 -0
  295. data/test/defs/test_defs_lt.rb +65 -0
  296. data/test/defs/test_defs_lu.rb +35 -0
  297. data/test/defs/test_defs_lv.rb +98 -0
  298. data/test/defs/test_defs_ma.rb +29 -0
  299. data/test/defs/test_defs_mt_en.rb +41 -0
  300. data/test/defs/test_defs_mt_mt.rb +41 -0
  301. data/test/defs/test_defs_mx.rb +49 -0
  302. data/test/defs/test_defs_my.rb +23 -0
  303. data/test/defs/test_defs_nerc.rb +29 -0
  304. data/test/defs/test_defs_ng.rb +29 -0
  305. data/test/defs/test_defs_nl.rb +33 -0
  306. data/test/defs/test_defs_no.rb +43 -0
  307. data/test/defs/test_defs_northamerica.rb +667 -0
  308. data/test/defs/test_defs_nyse.rb +46 -0
  309. data/test/defs/test_defs_nz.rb +67 -0
  310. data/test/defs/test_defs_pe.rb +47 -0
  311. data/test/defs/test_defs_ph.rb +29 -0
  312. data/test/defs/test_defs_pl.rb +229 -0
  313. data/test/defs/test_defs_pt.rb +47 -0
  314. data/test/defs/test_defs_ro.rb +65 -0
  315. data/test/defs/test_defs_rs_cyrl.rb +46 -0
  316. data/test/defs/test_defs_rs_la.rb +46 -0
  317. data/test/defs/test_defs_ru.rb +34 -0
  318. data/test/defs/test_defs_scandinavia.rb +215 -0
  319. data/test/defs/test_defs_se.rb +59 -0
  320. data/test/defs/test_defs_sg.rb +25 -0
  321. data/test/defs/test_defs_si.rb +105 -0
  322. data/test/defs/test_defs_sk.rb +41 -0
  323. data/test/defs/test_defs_southamerica.rb +327 -0
  324. data/test/defs/test_defs_th.rb +33 -0
  325. data/test/defs/test_defs_tn.rb +27 -0
  326. data/test/defs/test_defs_tr.rb +60 -0
  327. data/test/defs/test_defs_ua.rb +41 -0
  328. data/test/defs/test_defs_unitednations.rb +11 -0
  329. data/test/defs/test_defs_ups.rb +31 -0
  330. data/test/defs/test_defs_us.rb +387 -0
  331. data/test/defs/test_defs_ve.rb +35 -0
  332. data/test/defs/test_defs_vi.rb +22 -0
  333. data/test/defs/test_defs_za.rb +35 -0
  334. data/test/holidays/core_extensions/test_date.rb +122 -0
  335. data/test/holidays/core_extensions/test_date_time.rb +60 -0
  336. data/test/holidays/date_calculator/test_day_of_month.rb +27 -0
  337. data/test/holidays/date_calculator/test_easter_gregorian.rb +30 -0
  338. data/test/holidays/date_calculator/test_easter_julian.rb +36 -0
  339. data/test/holidays/date_calculator/test_lunar_date.rb +89 -0
  340. data/test/holidays/date_calculator/test_weekend_modifier.rb +54 -0
  341. data/test/holidays/definition/context/test_function_processor.rb +199 -0
  342. data/test/holidays/definition/context/test_generator.rb +226 -0
  343. data/test/holidays/definition/context/test_load.rb +37 -0
  344. data/test/holidays/definition/context/test_merger.rb +25 -0
  345. data/test/holidays/definition/decorator/test_custom_method_proc.rb +113 -0
  346. data/test/holidays/definition/decorator/test_custom_method_source.rb +96 -0
  347. data/test/holidays/definition/decorator/test_test.rb +123 -0
  348. data/test/holidays/definition/generator/test_module.rb +268 -0
  349. data/test/holidays/definition/generator/test_regions.rb +97 -0
  350. data/test/holidays/definition/generator/test_test.rb +113 -0
  351. data/test/holidays/definition/parser/test_custom_method.rb +79 -0
  352. data/test/holidays/definition/parser/test_test.rb +142 -0
  353. data/test/holidays/definition/repository/test_cache.rb +123 -0
  354. data/test/holidays/definition/repository/test_custom_methods.rb +43 -0
  355. data/test/holidays/definition/repository/test_holidays_by_month.rb +275 -0
  356. data/test/holidays/definition/repository/test_proc_result_cache.rb +91 -0
  357. data/test/holidays/definition/repository/test_regions.rb +104 -0
  358. data/test/holidays/definition/validator/test_custom_method.rb +94 -0
  359. data/test/holidays/definition/validator/test_region.rb +54 -0
  360. data/test/holidays/definition/validator/test_test.rb +60 -0
  361. data/test/holidays/finder/context/test_between.rb +172 -0
  362. data/test/holidays/finder/context/test_dates_driver_builder.rb +91 -0
  363. data/test/holidays/finder/context/test_next_holiday.rb +156 -0
  364. data/test/holidays/finder/context/test_parse_options.rb +141 -0
  365. data/test/holidays/finder/context/test_search.rb +232 -0
  366. data/test/holidays/finder/context/test_year_holiday.rb +202 -0
  367. data/test/holidays/finder/rules/test_in_region.rb +42 -0
  368. data/test/holidays/finder/rules/test_year_range.rb +166 -0
  369. data/test/integration/README.md +9 -0
  370. data/test/integration/test_all_regions.rb +49 -0
  371. data/test/integration/test_any_holidays_during_work_week.rb +90 -0
  372. data/test/integration/test_available_regions.rb +23 -0
  373. data/test/integration/test_custom_holidays.rb +41 -0
  374. data/test/integration/test_custom_informal_holidays.rb +15 -0
  375. data/test/integration/test_custom_year_range_holidays.rb +35 -0
  376. data/test/integration/test_holidays.rb +243 -0
  377. data/test/integration/test_holidays_between.rb +87 -0
  378. data/test/integration/test_multiple_regions.rb +71 -0
  379. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  380. data/test/integration/test_nonstandard_regions.rb +25 -0
  381. data/test/test_helper.rb +37 -0
  382. metadata +649 -0
@@ -0,0 +1,969 @@
1
+ # Canadian holiday definitions for the Ruby Holiday gem.
2
+ # Updated 2020-03-18.
3
+ #
4
+ # Notes:
5
+ # - 'Family Day' in various provinces are only celebrated after certain years: http://www.timeanddate.com/holidays/canada/family-day
6
+ # - 'Family Day' for New Brunswick after 2018 http://www.gnb.ca/legis/bill/FILE/58/3/Bill-67-e.htm
7
+ # - 'National Aboriginal Day for Yukon' Bill 2 received Royal Assent on May 8, 2017. http://www.gov.yk.ca/news/17-075.html
8
+ # - 'Nunavut’s legislative assembly voted to pass Bill 29 making Nunavut Day', July 9, an officially statutory holiday across the territory. https://www.gov.nu.ca/human-resources/information/public-service-holidays
9
+ # - 'According to Manitoba labour standards, Terry Fox Day is not a formal holiday. https://www.gov.mb.ca/labour/standards/doc,gen-holidays-after-april-30-07,factsheet.html#q13'
10
+ ---
11
+ months:
12
+ 0:
13
+ - name: Good Friday
14
+ regions: [ca]
15
+ function: easter(year)
16
+ function_modifier: -2
17
+ - name: Easter Sunday
18
+ regions: [ca]
19
+ function: easter(year)
20
+ type: informal
21
+ - name: Easter Monday
22
+ regions: [ca]
23
+ function: easter(year)
24
+ function_modifier: 1
25
+ type: informal
26
+ 1:
27
+ - name: New Year's Day
28
+ regions: [ca]
29
+ mday: 1
30
+ observed: to_monday_if_weekend(date)
31
+ - name: New Year's
32
+ regions: [ca_qc]
33
+ mday: 2
34
+ 2:
35
+ - name: Family Day
36
+ regions: [ca_ab]
37
+ wday: 1
38
+ week: 3
39
+ year_ranges:
40
+ from: 1990
41
+ - name: Family Day
42
+ regions: [ca_sk]
43
+ wday: 1
44
+ week: 3
45
+ year_ranges:
46
+ from: 2007
47
+ - name: Family Day
48
+ regions: [ca_on]
49
+ wday: 1
50
+ week: 3
51
+ year_ranges:
52
+ from: 2008
53
+ - name: Family Day
54
+ regions: [ca_bc]
55
+ wday: 1
56
+ week: 2
57
+ year_ranges:
58
+ between:
59
+ start: 2013
60
+ end: 2018
61
+ - name: Family Day
62
+ regions: [ca_bc]
63
+ wday: 1
64
+ week: 3
65
+ year_ranges:
66
+ from: 2019
67
+ - name: Family Day
68
+ regions: [ca_nb]
69
+ wday: 1
70
+ week: 3
71
+ year_ranges:
72
+ from: 2018
73
+ - name: Louis Riel Day
74
+ regions: [ca_mb]
75
+ wday: 1
76
+ week: 3
77
+ - name: Nova Scotia Heritage Day
78
+ regions: [ca_ns]
79
+ wday: 1
80
+ week: 3
81
+ year_ranges:
82
+ from: 2015
83
+ - name: Islander Day
84
+ regions: [ca_pe]
85
+ wday: 1
86
+ week: 3
87
+ 3:
88
+ - name: St. Patrick's Day
89
+ regions: [ca_nl]
90
+ mday: 17
91
+ type: informal
92
+ - name: St. George's Day
93
+ regions: [ca_nl]
94
+ mday: 23
95
+ type: informal
96
+ 5:
97
+ - name: Victoria Day
98
+ regions: [ca_ab, ca_bc, ca_mb, ca_nt, ca_nu, ca_on, ca_sk, ca_yt]
99
+ function: ca_victoria_day(year)
100
+ - name: National Patriotes Day
101
+ regions: [ca_qc]
102
+ function: ca_victoria_day(year)
103
+ 6:
104
+ - name: Discovery Day
105
+ regions: [ca_nl]
106
+ mday: 24
107
+ type: informal
108
+ - name: Fête Nationale
109
+ regions: [ca_qc]
110
+ mday: 24
111
+ - name: National Aboriginal Day
112
+ regions: [ca_nt]
113
+ mday: 21
114
+ - name: National Aboriginal Day
115
+ regions: [ca_yt]
116
+ mday: 21
117
+ year_ranges:
118
+ from: 2017
119
+ 7:
120
+ - name: Canada Day
121
+ regions: [ca]
122
+ mday: 1
123
+ observed: to_monday_if_weekend(date)
124
+ - name: Orangemen's Day
125
+ regions: [ca_nl]
126
+ mday: 12
127
+ type: informal
128
+ - name: Nunavut Day
129
+ regions: [ca_nu]
130
+ mday: 9
131
+ observed: to_monday_if_weekend(date)
132
+ year_ranges:
133
+ from: 2020
134
+ 8:
135
+ - name: B.C. Day
136
+ week: 1
137
+ regions: [ca_bc]
138
+ wday: 1
139
+ - name: Saskatchewan Day
140
+ week: 1
141
+ regions: [ca_sk]
142
+ wday: 1
143
+ - name: Heritage Day
144
+ week: 1
145
+ regions: [ca_ab]
146
+ type: informal
147
+ wday: 1
148
+ - name: Natal Day
149
+ week: 1
150
+ regions: [ca_ns]
151
+ wday: 1
152
+ type: informal
153
+ - name: Civic Holiday
154
+ week: 1
155
+ regions: [ca_nt, ca_nu]
156
+ wday: 1
157
+ - name: Civic Holiday
158
+ week: 1
159
+ regions: [ca_on, ca_pe]
160
+ wday: 1
161
+ type: informal
162
+ - name: New Brunswick Day
163
+ week: 1
164
+ regions: [ca_nb]
165
+ wday: 1
166
+ - name: Terry Fox Day
167
+ week: 1
168
+ regions: [ca_mb]
169
+ wday: 1
170
+ type: informal
171
+ - name: Discovery Day
172
+ week: 3
173
+ regions: [ca_yt]
174
+ wday: 1
175
+ 9:
176
+ - name: Labour Day
177
+ week: 1
178
+ regions: [ca]
179
+ wday: 1
180
+ - name: National Day for Truth and Reconciliation
181
+ regions: [ca_bc, ca_nt, ca_pe, ca_yt]
182
+ mday: 30
183
+ observed: to_monday_if_weekend(date)
184
+ year_ranges:
185
+ from: 2021
186
+ - name: National Day for Truth and Reconciliation
187
+ regions: [ca_ab, ca_mb, ca_nu]
188
+ mday: 30
189
+ observed: to_monday_if_weekend(date)
190
+ type: informal
191
+ year_ranges:
192
+ from: 2021
193
+ 10:
194
+ - name: Thanksgiving
195
+ week: 2
196
+ regions: [ca_ab, ca_bc, ca_mb, ca_nt, ca_nu, ca_on, ca_qc, ca_sk, ca_yt]
197
+ wday: 1
198
+ 11:
199
+ - name: Remembrance Day
200
+ regions: [ca_ab, ca_sk, ca_bc, ca_pe, ca_nl, ca_nt, ca_nu, ca_nb, ca_yt]
201
+ mday: 11
202
+ observed: to_monday_if_weekend(date)
203
+ 12:
204
+ - name: Christmas Day
205
+ regions: [ca_on]
206
+ mday: 25
207
+ year_ranges:
208
+ until: 2020
209
+ observed: to_weekday_if_weekend(date)
210
+ - name: Christmas Day
211
+ regions: [ca_on]
212
+ mday: 25
213
+ observed: to_monday_if_weekend(date)
214
+ year_ranges:
215
+ from: 2020
216
+ - name: Christmas Day
217
+ regions: [ca_ab, ca_bc, ca_mb, ca_nb, ca_nl, ca_nt, ca_ns, ca_nu, ca_pe, ca_qc, ca_sk, ca_yt]
218
+ mday: 25
219
+ observed: to_weekday_if_weekend(date)
220
+ - name: Boxing Day
221
+ regions: [ca_on]
222
+ mday: 26
223
+ year_ranges:
224
+ until: 2020
225
+ observed: to_monday_if_weekend(date)
226
+ - name: Boxing Day
227
+ regions: [ca_on]
228
+ mday: 26
229
+ year_ranges:
230
+ from: 2020
231
+ observed: to_weekday_if_boxing_weekend(date)
232
+ - name: Boxing Day
233
+ regions: [ca_ab, ca_bc, ca_mb, ca_nb, ca_nl, ca_nt, ca_ns, ca_nu, ca_pe, ca_qc, ca_sk, ca_yt]
234
+ mday: 26
235
+ observed: to_monday_if_weekend(date)
236
+ type: informal
237
+
238
+ methods:
239
+ ca_victoria_day:
240
+ # Monday on or before May 24
241
+ arguments: year
242
+ ruby: |
243
+ date = Date.civil(year,5,24)
244
+ if date.wday > 1
245
+ date -= (date.wday - 1)
246
+ elsif date.wday == 0
247
+ date -= 6
248
+ end
249
+ date
250
+
251
+ tests:
252
+ - given:
253
+ date: '2008-01-01'
254
+ regions: ["ca"]
255
+ options: ["informal"]
256
+ expect:
257
+ name: "New Year's Day"
258
+ - given:
259
+ date: '2008-03-21'
260
+ regions: ["ca"]
261
+ options: ["informal"]
262
+ expect:
263
+ name: "Good Friday"
264
+ - given:
265
+ date: '2013-03-31'
266
+ regions: ["ca"]
267
+ options: ["informal"]
268
+ expect:
269
+ name: "Easter Sunday"
270
+ - given:
271
+ date: '2008-03-24'
272
+ regions: ["ca"]
273
+ options: ["informal"]
274
+ expect:
275
+ name: "Easter Monday"
276
+ - given:
277
+ date: '2008-07-01'
278
+ regions: ["ca"]
279
+ options: ["informal"]
280
+ expect:
281
+ name: "Canada Day"
282
+ - given:
283
+ date: '2008-09-01'
284
+ regions: ["ca"]
285
+ options: ["informal"]
286
+ expect:
287
+ name: "Labour Day"
288
+ - given:
289
+ date: '2008-12-25'
290
+ regions: ["ca_on"]
291
+ options: ["informal"]
292
+ expect:
293
+ name: "Christmas Day"
294
+
295
+ # Family Day in Alberta - Should only be active on 1990 or later
296
+ - given:
297
+ date: '1990-02-19'
298
+ regions: ["ca_ab"]
299
+ expect:
300
+ name: "Family Day"
301
+ - given:
302
+ date: '2013-02-18'
303
+ regions: ["ca_ab"]
304
+ expect:
305
+ name: "Family Day"
306
+ - given:
307
+ date: '2014-02-17'
308
+ regions: ["ca_ab"]
309
+ expect:
310
+ name: "Family Day"
311
+ - given:
312
+ date: '2044-02-15'
313
+ regions: ["ca_ab"]
314
+ expect:
315
+ name: "Family Day"
316
+
317
+ # Family Day in Alberta - should not be active before 1990
318
+ - given:
319
+ date: '1970-02-16'
320
+ regions: ["ca_ab"]
321
+ expect:
322
+ holiday: false
323
+ - given:
324
+ date: '1988-02-15'
325
+ regions: ["ca_ab"]
326
+ expect:
327
+ holiday: false
328
+ - given:
329
+ date: '1989-02-20'
330
+ regions: ["ca_ab"]
331
+ expect:
332
+ holiday: false
333
+
334
+ # Family Day in Saskatchewan - Should only be active on 2007 or later
335
+ - given:
336
+ date: '2007-02-19'
337
+ regions: ["ca_sk"]
338
+ expect:
339
+ name: "Family Day"
340
+ - given:
341
+ date: '2013-02-18'
342
+ regions: ["ca_sk"]
343
+ expect:
344
+ name: "Family Day"
345
+ - given:
346
+ date: '2014-02-17'
347
+ regions: ["ca_sk"]
348
+ expect:
349
+ name: "Family Day"
350
+ - given:
351
+ date: '2044-02-15'
352
+ regions: ["ca_sk"]
353
+ expect:
354
+ name: "Family Day"
355
+
356
+ # Family Day in Saskatchewan - should not be active before 2007
357
+ - given:
358
+ date: '1970-02-16'
359
+ regions: ["ca_sk"]
360
+ expect:
361
+ holiday: false
362
+ - given:
363
+ date: '1988-02-15'
364
+ regions: ["ca_sk"]
365
+ expect:
366
+ holiday: false
367
+ - given:
368
+ date: '1989-02-20'
369
+ regions: ["ca_sk"]
370
+ expect:
371
+ holiday: false
372
+ - given:
373
+ date: '2006-02-20'
374
+ regions: ["ca_sk"]
375
+ expect:
376
+ holiday: false
377
+
378
+ # Family Day in Ontario - Should only be active on 2008 or later
379
+ - given:
380
+ date: '2008-02-18'
381
+ regions: ["ca_on"]
382
+ expect:
383
+ name: "Family Day"
384
+ - given:
385
+ date: '2013-02-18'
386
+ regions: ["ca_on"]
387
+ expect:
388
+ name: "Family Day"
389
+ - given:
390
+ date: '2014-02-17'
391
+ regions: ["ca_on"]
392
+ expect:
393
+ name: "Family Day"
394
+ - given:
395
+ date: '2044-02-15'
396
+ regions: ["ca_on"]
397
+ expect:
398
+ name: "Family Day"
399
+
400
+ # Family Day in Ontario - should not be active before 2008
401
+ - given:
402
+ date: '1970-02-16'
403
+ regions: ["ca_on"]
404
+ expect:
405
+ holiday: false
406
+ - given:
407
+ date: '1988-02-15'
408
+ regions: ["ca_on"]
409
+ expect:
410
+ holiday: false
411
+ - given:
412
+ date: '1989-02-20'
413
+ regions: ["ca_on"]
414
+ expect:
415
+ holiday: false
416
+ - given:
417
+ date: '2006-02-20'
418
+ regions: ["ca_on"]
419
+ expect:
420
+ holiday: false
421
+ - given:
422
+ date: '2007-02-19'
423
+ regions: ["ca_on"]
424
+ expect:
425
+ holiday: false
426
+
427
+ # Family Day in BC on 2nd week - Should only be active between 2013 and 2018
428
+ - given:
429
+ date: '2013-02-11'
430
+ regions: ["ca_bc"]
431
+ expect:
432
+ name: "Family Day"
433
+ - given:
434
+ date: '2014-02-10'
435
+ regions: ["ca_bc"]
436
+ expect:
437
+ name: "Family Day"
438
+ - given:
439
+ date: '2018-02-12'
440
+ regions: ["ca_bc"]
441
+ expect:
442
+ name: "Family Day"
443
+
444
+ # Family Day in BC on 2nd week - Should not be active before 2013 and after 2018
445
+ - given:
446
+ date: '2000-02-14'
447
+ regions: ["ca_bc"]
448
+ expect:
449
+ holiday: false
450
+ - given:
451
+ date: '2011-02-14'
452
+ regions: ["ca_bc"]
453
+ expect:
454
+ holiday: false
455
+ - given:
456
+ date: '2012-02-13'
457
+ regions: ["ca_bc"]
458
+ expect:
459
+ holiday: false
460
+ - given:
461
+ date: '2019-02-11'
462
+ regions: ["ca_bc"]
463
+ expect:
464
+ holiday: false
465
+ - given:
466
+ date: '2044-02-08'
467
+ regions: ["ca_bc"]
468
+ expect:
469
+ holiday: false
470
+
471
+ # Family Day in BC on 3nd week - Should only be active after 2018
472
+ - given:
473
+ date: '2019-02-18'
474
+ regions: ["ca_bc"]
475
+ expect:
476
+ name: "Family Day"
477
+ - given:
478
+ date: '2020-02-17'
479
+ regions: ["ca_bc"]
480
+ expect:
481
+ name: "Family Day"
482
+ - given:
483
+ date: '2044-02-15'
484
+ regions: ["ca_bc"]
485
+ expect:
486
+ name: "Family Day"
487
+
488
+ # Family Day in BC on 3nd week - Should not be active before 2019
489
+ - given:
490
+ date: '2000-02-21'
491
+ regions: ["ca_bc"]
492
+ expect:
493
+ holiday: false
494
+ - given:
495
+ date: '2011-02-21'
496
+ regions: ["ca_bc"]
497
+ expect:
498
+ holiday: false
499
+ - given:
500
+ date: '2018-02-19'
501
+ regions: ["ca_bc"]
502
+ expect:
503
+ holiday: false
504
+
505
+ # Family Day in NB - Should only be active on 2018 or later
506
+ - given:
507
+ date: '2018-02-19'
508
+ regions: ['ca_nb']
509
+ expect:
510
+ name: 'Family Day'
511
+ - given:
512
+ date: '2019-02-18'
513
+ regions: ['ca_nb']
514
+ expect:
515
+ name: 'Family Day'
516
+ # Family Day in NB - should not be active before 2018
517
+ - given:
518
+ date: '2016-02-18'
519
+ regions: ['ca_nb']
520
+ expect:
521
+ holiday: false
522
+ - given:
523
+ date: '2017-02-20'
524
+ regions: ['ca_nb']
525
+ expect:
526
+ holiday: false
527
+
528
+ # Nova Scotia Heritage Day - should only be active on 2015 and later
529
+ - given:
530
+ date: '2015-02-16'
531
+ regions: ["ca_ns"]
532
+ expect:
533
+ name: "Nova Scotia Heritage Day"
534
+ - given:
535
+ date: '2016-02-15'
536
+ regions: ["ca_ns"]
537
+ expect:
538
+ name: "Nova Scotia Heritage Day"
539
+ - given:
540
+ date: '2017-02-20'
541
+ regions: ["ca_ns"]
542
+ expect:
543
+ name: "Nova Scotia Heritage Day"
544
+ - given:
545
+ date: '2044-02-15'
546
+ regions: ["ca_ns"]
547
+ expect:
548
+ name: "Nova Scotia Heritage Day"
549
+
550
+ # Nova Scotia Heritage Day - should not be active before 2015
551
+ - given:
552
+ date: '2000-02-21'
553
+ regions: ["ca_ns"]
554
+ expect:
555
+ holiday: false
556
+ - given:
557
+ date: '2012-02-20'
558
+ regions: ["ca_ns"]
559
+ expect:
560
+ holiday: false
561
+ - given:
562
+ date: '2013-02-18'
563
+ regions: ["ca_ns"]
564
+ expect:
565
+ holiday: false
566
+ - given:
567
+ date: '2014-02-17'
568
+ regions: ["ca_ns"]
569
+ expect:
570
+ holiday: false
571
+
572
+ - given:
573
+ date: '2013-02-18'
574
+ regions: ["ca_pe"]
575
+ expect:
576
+ name: "Islander Day"
577
+ - given:
578
+ date: '2014-02-17'
579
+ regions: ["ca_pe"]
580
+ expect:
581
+ name: "Islander Day"
582
+
583
+ - given:
584
+ date: ['2004-05-24', '2005-5-23', '2006-5-22', '2007-5-21', '2008-5-19']
585
+ regions: ["ca_ab", "ca_bc", "ca_mb", "ca_nt", "ca_nu", "ca_on", "ca_sk", "ca_yt"]
586
+ expect:
587
+ name: "Victoria Day"
588
+
589
+ # First Monday in August
590
+ - given:
591
+ date: '2013-08-05'
592
+ regions: ["ca_bc"]
593
+ expect:
594
+ name: "B.C. Day"
595
+ - given:
596
+ date: '2013-08-05'
597
+ regions: ["ca_sk"]
598
+ expect:
599
+ name: "Saskatchewan Day"
600
+ - given:
601
+ date: '2013-08-05'
602
+ regions: ["ca_ab"]
603
+ options: ["informal"]
604
+ expect:
605
+ name: "Heritage Day"
606
+ - given:
607
+ date: '2013-08-05'
608
+ regions: ["ca_ns"]
609
+ options: ["informal"]
610
+ expect:
611
+ name: "Natal Day"
612
+ - given:
613
+ date: ['2013-08-05', '2014-8-4', '2015-8-3']
614
+ regions: ["ca_on"]
615
+ options: ["informal"]
616
+ expect:
617
+ name: "Civic Holiday"
618
+ - given:
619
+ date: '2013-08-05'
620
+ regions: ["ca_nt"]
621
+ expect:
622
+ name: "Civic Holiday"
623
+ - given:
624
+ date: '2013-08-05'
625
+ regions: ["ca_nu"]
626
+ expect:
627
+ name: "Civic Holiday"
628
+ - given:
629
+ date: '2013-08-05'
630
+ regions: ["ca_pe"]
631
+ options: ["informal"]
632
+ expect:
633
+ name: "Civic Holiday"
634
+ - given:
635
+ date: '2013-08-05'
636
+ regions: ["ca_nb"]
637
+ expect:
638
+ name: "New Brunswick Day"
639
+ - given:
640
+ date: '2014-08-04'
641
+ regions: ["ca_bc"]
642
+ expect:
643
+ name: "B.C. Day"
644
+ - given:
645
+ date: '2014-08-04'
646
+ regions: ["ca_sk"]
647
+ expect:
648
+ name: "Saskatchewan Day"
649
+ - given:
650
+ date: '2014-08-04'
651
+ regions: ["ca_ab"]
652
+ options: ["informal"]
653
+ expect:
654
+ name: "Heritage Day"
655
+ - given:
656
+ date: '2014-08-04'
657
+ regions: ["ca_ns"]
658
+ options: ["informal"]
659
+ expect:
660
+ name: "Natal Day"
661
+ - given:
662
+ date: '2014-08-04'
663
+ regions: ["ca_nt"]
664
+ expect:
665
+ name: "Civic Holiday"
666
+ - given:
667
+ date: '2014-08-04'
668
+ regions: ["ca_nu"]
669
+ expect:
670
+ name: "Civic Holiday"
671
+ - given:
672
+ date: '2014-08-04'
673
+ regions: ["ca_pe"]
674
+ options: ["informal"]
675
+ expect:
676
+ name: "Civic Holiday"
677
+ - given:
678
+ date: '2014-08-04'
679
+ regions: ["ca_nb"]
680
+ expect:
681
+ name: "New Brunswick Day"
682
+ - given:
683
+ date: '2015-08-03'
684
+ regions: ["ca_bc"]
685
+ expect:
686
+ name: "B.C. Day"
687
+ - given:
688
+ date: '2015-08-03'
689
+ regions: ["ca_sk"]
690
+ expect:
691
+ name: "Saskatchewan Day"
692
+ - given:
693
+ date: '2015-08-03'
694
+ regions: ["ca_ab"]
695
+ options: ["informal"]
696
+ expect:
697
+ name: "Heritage Day"
698
+ - given:
699
+ date: '2015-08-03'
700
+ regions: ["ca_ns"]
701
+ options: ["informal"]
702
+ expect:
703
+ name: "Natal Day"
704
+ - given:
705
+ date: '2015-08-03'
706
+ regions: ["ca_nt"]
707
+ expect:
708
+ name: "Civic Holiday"
709
+ - given:
710
+ date: '2015-08-03'
711
+ regions: ["ca_nu"]
712
+ expect:
713
+ name: "Civic Holiday"
714
+ - given:
715
+ date: '2015-08-03'
716
+ regions: ["ca_pe"]
717
+ options: ["informal"]
718
+ expect:
719
+ name: "Civic Holiday"
720
+ - given:
721
+ date: '2015-08-03'
722
+ regions: ["ca_nb"]
723
+ expect:
724
+ name: "New Brunswick Day"
725
+
726
+ # Remembrance Day in all Canadian provinces
727
+ # except (Nova Scotia, Manitoba, Ontario, and Quebec)
728
+ - given:
729
+ date: ['2010-11-11', '2012-11-12', '2017-11-13']
730
+ regions: ["ca_ab", "ca_sk", "ca_bc", "ca_pe", "ca_nl", "ca_nt", "ca_nu", "ca_nb", "ca_yt"]
731
+ options: ["observed"]
732
+ expect:
733
+ name: "Remembrance Day"
734
+ - given:
735
+ date: '2016-11-11'
736
+ regions: ["ca_ab", "ca_sk", "ca_bc", "ca_pe", "ca_nl", "ca_nt", "ca_nu", "ca_nb", "ca_yt"]
737
+ expect:
738
+ name: "Remembrance Day"
739
+
740
+ # New years observed date
741
+ - given:
742
+ date: '2011-01-03'
743
+ regions: ["ca"]
744
+ options: ["observed"]
745
+ expect:
746
+ name: "New Year's Day"
747
+ - given:
748
+ date: '2012-01-02'
749
+ regions: ["ca"]
750
+ options: ["observed"]
751
+ expect:
752
+ name: "New Year's Day"
753
+ - given:
754
+ date: '2016-01-01'
755
+ regions: ["ca"]
756
+ options: ["observed"]
757
+ expect:
758
+ name: "New Year's Day"
759
+
760
+ # Canada Day observed date
761
+ - given:
762
+ date: '2011-07-01'
763
+ regions: ["ca"]
764
+ options: ["observed"]
765
+ expect:
766
+ name: "Canada Day"
767
+ - given:
768
+ date: '2012-07-02'
769
+ regions: ["ca"]
770
+ options: ["observed"]
771
+ expect:
772
+ name: "Canada Day"
773
+ - given:
774
+ date: '2017-07-03'
775
+ regions: ["ca"]
776
+ options: ["observed"]
777
+ expect:
778
+ name: "Canada Day"
779
+
780
+ # National Day for Truth and Reconciliation
781
+ - given:
782
+ date: '2021-09-30'
783
+ regions: ["ca_bc", "ca_nt", "ca_pe", "ca_yt"]
784
+ expect:
785
+ name: "National Day for Truth and Reconciliation"
786
+ - given:
787
+ date: '2021-09-30'
788
+ regions: ["ca_ab", "ca_mb", "ca_nu"]
789
+ options: ["informal"]
790
+ expect:
791
+ name: "National Day for Truth and Reconciliation"
792
+ - given:
793
+ date: '2023-10-02'
794
+ regions: ["ca_bc", "ca_nt", "ca_pe", "ca_yt"]
795
+ options: ["observed"]
796
+ expect:
797
+ name: "National Day for Truth and Reconciliation"
798
+ - given:
799
+ date: '2023-10-02'
800
+ regions: ["ca_ab", "ca_mb", "ca_nu"]
801
+ options: ["informal", "observed"]
802
+ expect:
803
+ name: "National Day for Truth and Reconciliation"
804
+ - given:
805
+ date: '2026-09-30'
806
+ regions: ["ca_bc", "ca_nt", "ca_pe", "ca_yt"]
807
+ options: ["observed"]
808
+ expect:
809
+ name: "National Day for Truth and Reconciliation"
810
+ - given:
811
+ date: '2026-09-30'
812
+ regions: ["ca_ab", "ca_mb", "ca_nu"]
813
+ options: ["informal", "observed"]
814
+ expect:
815
+ name: "National Day for Truth and Reconciliation"
816
+
817
+ # National Day for Truth and Reconciliation - should not be active before 2021
818
+ - given:
819
+ date: '2020-09-30'
820
+ regions: ["ca"]
821
+ expect:
822
+ holiday: false
823
+ - given:
824
+ date: '1985-09-30'
825
+ regions: ["ca"]
826
+ expect:
827
+ holiday: false
828
+
829
+ # Christmas Day
830
+ - given:
831
+ date: '2010-12-25'
832
+ regions: ["ca_on"]
833
+ expect:
834
+ name: "Christmas Day"
835
+ - given:
836
+ date: '2018-12-25'
837
+ regions: ["ca_on"]
838
+ expect:
839
+ name: "Christmas Day"
840
+ - given:
841
+ date: '2022-12-25'
842
+ regions: ["ca_on"]
843
+ expect:
844
+ name: "Christmas Day"
845
+ - given:
846
+ date: '2022-12-25'
847
+ regions: ["ca"]
848
+ options: ["observed"]
849
+ expect:
850
+ holiday: false
851
+
852
+ # Christmas Day observed date
853
+ - given:
854
+ date: '2010-12-24'
855
+ regions: ["ca_on"]
856
+ options: ["observed"]
857
+ expect:
858
+ name: "Christmas Day"
859
+ - given:
860
+ date: '2012-12-25'
861
+ regions: ["ca_on"]
862
+ options: ["observed"]
863
+ expect:
864
+ name: "Christmas Day"
865
+ - given:
866
+ date: '2016-12-26'
867
+ regions: ["ca_on"]
868
+ options: ["observed"]
869
+ expect:
870
+ name: "Christmas Day"
871
+ - given:
872
+ date: '2021-12-24'
873
+ regions: ["ca_ab", "ca_bc", "ca_mb", "ca_nb", "ca_nl", "ca_nt", "ca_ns", "ca_nu", "ca_pe", "ca_qc", "ca_sk", "ca_yt"]
874
+ options: ["observed"]
875
+ expect:
876
+ name: "Christmas Day"
877
+ - given:
878
+ date: '2021-12-27'
879
+ regions: [ "ca_on" ]
880
+ options: [ "observed" ]
881
+ expect:
882
+ name: "Christmas Day"
883
+ - given:
884
+ date: '2022-12-26'
885
+ regions: ["ca_on"]
886
+ options: ["observed"]
887
+ expect:
888
+ name: "Christmas Day"
889
+
890
+ - given:
891
+ date: ['2010-12-27', '2012-12-26', '2015-12-28']
892
+ regions: ["ca_on"]
893
+ options: ["observed"]
894
+ expect:
895
+ name: "Boxing Day"
896
+
897
+ # Yukon National Aboriginal Day - should not be active before 2017
898
+ - given:
899
+ date: '2015-06-21'
900
+ regions: ['ca_yt']
901
+ expect:
902
+ holiday: false
903
+ - given:
904
+ date: '2016-06-21'
905
+ regions: ['ca_yt']
906
+ expect:
907
+ holiday: false
908
+ # Yukon National Aboriginal Day - should be active after 2017
909
+ - given:
910
+ date: '2017-06-21'
911
+ regions: ['ca_yt']
912
+ expect:
913
+ name: 'National Aboriginal Day'
914
+ - given:
915
+ date: '2018-06-21'
916
+ regions: ['ca_yt']
917
+ expect:
918
+ name: 'National Aboriginal Day'
919
+ - given:
920
+ date: '2019-08-05'
921
+ regions: ['ca_mb']
922
+ options: ['informal']
923
+ expect:
924
+ name: 'Terry Fox Day'
925
+ - given:
926
+ date: '2020-08-03'
927
+ regions: ['ca_mb']
928
+ options: ['informal']
929
+ expect:
930
+ name: 'Terry Fox Day'
931
+ - given:
932
+ date: '2020-08-03'
933
+ regions: ['ca_mb']
934
+ expect:
935
+ holiday: false
936
+ - given:
937
+ date: '2015-08-03'
938
+ regions: ['ca_mb']
939
+ options: ['informal']
940
+ expect:
941
+ name: 'Terry Fox Day'
942
+ - given:
943
+ date: '2045-08-07'
944
+ regions: ['ca_mb']
945
+ options: ['informal']
946
+ expect:
947
+ name: 'Terry Fox Day'
948
+ # Nunavut Day, July 9 - Should only be active on 2020 or later
949
+ - given:
950
+ date: '2020-07-09'
951
+ regions: ['ca_nu']
952
+ expect:
953
+ name: 'Nunavut Day'
954
+ - given:
955
+ date: '2021-07-09'
956
+ regions: ['ca_nu']
957
+ expect:
958
+ name: 'Nunavut Day'
959
+ # Nunavut Day, July 9 - should NOT be active before 2020
960
+ - given:
961
+ date: '2019-07-09'
962
+ regions: ['ca_nu']
963
+ expect:
964
+ holiday: false
965
+ - given:
966
+ date: '2018-07-09'
967
+ regions: ['ca_nu']
968
+ expect:
969
+ holiday: false