holidays 7.1.0 → 8.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -1
  3. data/README.md +3 -4
  4. data/doc/CONTRIBUTING.md +2 -1
  5. data/holidays.gemspec +5 -5
  6. data/lib/generated_definitions/MANIFEST +1 -0
  7. data/lib/generated_definitions/REGIONS.rb +2 -2
  8. data/lib/generated_definitions/au.rb +1 -1
  9. data/lib/generated_definitions/ca.rb +11 -10
  10. data/lib/generated_definitions/cl.rb +5 -5
  11. data/lib/generated_definitions/de.rb +3 -3
  12. data/lib/generated_definitions/es.rb +2 -1
  13. data/lib/generated_definitions/europe.rb +60 -16
  14. data/lib/generated_definitions/gb.rb +5 -3
  15. data/lib/generated_definitions/hu.rb +3 -2
  16. data/lib/generated_definitions/it.rb +14 -5
  17. data/lib/generated_definitions/jp.rb +21 -21
  18. data/lib/generated_definitions/lv.rb +52 -0
  19. data/lib/generated_definitions/northamerica.rb +15 -15
  20. data/lib/generated_definitions/ro.rb +5 -2
  21. data/lib/generated_definitions/southamerica.rb +5 -5
  22. data/lib/generated_definitions/tr.rb +1 -1
  23. data/lib/generated_definitions/ua.rb +6 -6
  24. data/lib/generated_definitions/us.rb +5 -6
  25. data/lib/holidays.rb +2 -0
  26. data/lib/holidays/definition/context/generator.rb +20 -34
  27. data/lib/holidays/definition/repository/holidays_by_month.rb +9 -1
  28. data/lib/holidays/finder/context/search.rb +34 -31
  29. data/lib/holidays/finder/rules/year_range.rb +30 -54
  30. data/lib/holidays/version.rb +1 -1
  31. data/test/coverage_report.rb +23 -5
  32. data/test/data/test_custom_year_range_holiday_defs.yaml +6 -10
  33. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  34. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  35. data/test/defs/test_defs_ca.rb +13 -1
  36. data/test/defs/test_defs_co.rb +3 -3
  37. data/test/defs/test_defs_europe.rb +126 -5
  38. data/test/defs/test_defs_hu.rb +12 -4
  39. data/test/defs/test_defs_it.rb +20 -0
  40. data/test/defs/test_defs_lv.rb +90 -0
  41. data/test/defs/test_defs_northamerica.rb +19 -11
  42. data/test/defs/test_defs_ro.rb +14 -0
  43. data/test/defs/test_defs_southamerica.rb +3 -3
  44. data/test/defs/test_defs_us.rb +6 -10
  45. data/test/holidays/core_extensions/test_date.rb +3 -2
  46. data/test/holidays/definition/context/test_generator.rb +5 -18
  47. data/test/holidays/definition/repository/test_holidays_by_month.rb +121 -1
  48. data/test/holidays/finder/rules/test_year_range.rb +43 -47
  49. data/test/integration/test_available_regions.rb +1 -1
  50. data/test/integration/test_custom_year_range_holidays.rb +0 -7
  51. data/test/integration/test_holidays.rb +1 -1
  52. data/test/integration/test_holidays_between.rb +10 -0
  53. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  54. metadata +21 -13
@@ -13,15 +13,15 @@ class HuDefinitionTests < Test::Unit::TestCase # :nodoc:
13
13
 
14
14
  assert_equal "1848/49-es forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 3, 15), [:hu], [:informal])[0] || {})[:name]
15
15
 
16
- assert_equal "Húsvét hétfő", (Holidays.on(Date.civil(2011, 4, 25), [:hu], [:informal])[0] || {})[:name]
16
+ assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2011, 4, 25), [:hu], [:informal])[0] || {})[:name]
17
17
 
18
- assert_equal "Húsvét hétfő", (Holidays.on(Date.civil(2012, 4, 9), [:hu], [:informal])[0] || {})[:name]
18
+ assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2012, 4, 9), [:hu], [:informal])[0] || {})[:name]
19
19
 
20
20
  assert_equal "A munka ünnepe", (Holidays.on(Date.civil(2012, 5, 1), [:hu], [:informal])[0] || {})[:name]
21
21
 
22
- assert_equal "Pünkösd hétfő", (Holidays.on(Date.civil(2011, 6, 13), [:hu], [:informal])[0] || {})[:name]
22
+ assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2011, 6, 13), [:hu], [:informal])[0] || {})[:name]
23
23
 
24
- assert_equal "Pünkösd hétfő", (Holidays.on(Date.civil(2012, 5, 28), [:hu], [:informal])[0] || {})[:name]
24
+ assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2012, 5, 28), [:hu], [:informal])[0] || {})[:name]
25
25
 
26
26
  assert_equal "Az államalapítás ünnepe", (Holidays.on(Date.civil(2012, 8, 20), [:hu], [:informal])[0] || {})[:name]
27
27
 
@@ -35,5 +35,13 @@ class HuDefinitionTests < Test::Unit::TestCase # :nodoc:
35
35
 
36
36
  assert_nil (Holidays.on(Date.civil(2012, 3, 14), [:hu])[0] || {})[:name]
37
37
 
38
+ assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2016, 3, 28), [:hu])[0] || {})[:name]
39
+
40
+ assert_nil (Holidays.on(Date.civil(2016, 3, 25), [:hu])[0] || {})[:name]
41
+
42
+ assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2017, 4, 17), [:hu])[0] || {})[:name]
43
+
44
+ assert_equal "Nagypéntek", (Holidays.on(Date.civil(2017, 4, 14), [:hu])[0] || {})[:name]
45
+
38
46
  end
39
47
  end
@@ -17,14 +17,34 @@ class ItDefinitionTests < Test::Unit::TestCase # :nodoc:
17
17
 
18
18
  assert_equal "Festa della Liberazione", (Holidays.on(Date.civil(2007, 4, 25), [:it], [:informal])[0] || {})[:name]
19
19
 
20
+ assert_equal "Festa di San Liberale", (Holidays.on(Date.civil(2019, 4, 27), [:it_tv], [:informal])[0] || {})[:name]
21
+
20
22
  assert_equal "Festa dei Lavoratori", (Holidays.on(Date.civil(2007, 5, 1), [:it], [:informal])[0] || {})[:name]
21
23
 
24
+ assert_equal "Festa di San Zeno", (Holidays.on(Date.civil(2019, 5, 21), [:it_vr], [:informal])[0] || {})[:name]
25
+
22
26
  assert_equal "Festa della Repubblica", (Holidays.on(Date.civil(2007, 6, 2), [:it], [:informal])[0] || {})[:name]
23
27
 
28
+ assert_equal "Festa di Sant'Antonio di Padova", (Holidays.on(Date.civil(2019, 6, 13), [:it_pd], [:informal])[0] || {})[:name]
29
+
30
+ assert_equal "Festa di San Giovanni Battista", (Holidays.on(Date.civil(2019, 6, 24), [:it_fi, :it_ge, :it_to], [:informal])[0] || {})[:name]
31
+
32
+ assert_nil (Holidays.on(Date.civil(2019, 6, 24), [:it])[0] || {})[:name]
33
+
34
+ assert_equal "Festa di San Pietro e Paolo", (Holidays.on(Date.civil(2019, 6, 29), [:it_rm], [:informal])[0] || {})[:name]
35
+
36
+ assert_nil (Holidays.on(Date.civil(2019, 6, 29), [:it])[0] || {})[:name]
37
+
24
38
  assert_equal "Assunzione", (Holidays.on(Date.civil(2007, 8, 15), [:it], [:informal])[0] || {})[:name]
25
39
 
40
+ assert_equal "Festa della Madonna di Monte Berico", (Holidays.on(Date.civil(2019, 9, 8), [:it_vi], [:informal])[0] || {})[:name]
41
+
26
42
  assert_equal "Ognissanti", (Holidays.on(Date.civil(2007, 11, 1), [:it], [:informal])[0] || {})[:name]
27
43
 
44
+ assert_equal "Festa di San Martino", (Holidays.on(Date.civil(2019, 11, 11), [:it_bl], [:informal])[0] || {})[:name]
45
+
46
+ assert_equal "Festa di San Bellino", (Holidays.on(Date.civil(2019, 11, 26), [:it_ro], [:informal])[0] || {})[:name]
47
+
28
48
  assert_equal "Immacolata Concezione", (Holidays.on(Date.civil(2007, 12, 8), [:it], [:informal])[0] || {})[:name]
29
49
 
30
50
  assert_equal "Natale", (Holidays.on(Date.civil(2007, 12, 25), [:it], [:informal])[0] || {})[:name]
@@ -0,0 +1,90 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
3
+
4
+ # This file is generated by the Ruby Holiday gem.
5
+ #
6
+ # Definitions loaded: definitions/lv.yaml
7
+ class LvDefinitionTests < Test::Unit::TestCase # :nodoc:
8
+
9
+ def test_lv
10
+ assert_equal "Jaungada diena", (Holidays.on(Date.civil(2018, 1, 1), [:lv])[0] || {})[:name]
11
+ assert_equal "Jaungada diena", (Holidays.on(Date.civil(2019, 1, 1), [:lv])[0] || {})[:name]
12
+ assert_equal "Jaungada diena", (Holidays.on(Date.civil(2029, 1, 1), [:lv])[0] || {})[:name]
13
+
14
+ assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2018, 3, 30), [:lv])[0] || {})[:name]
15
+ assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2019, 4, 19), [:lv])[0] || {})[:name]
16
+ assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2039, 4, 8), [:lv])[0] || {})[:name]
17
+
18
+ assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2018, 4, 1), [:lv])[0] || {})[:name]
19
+ assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2019, 4, 21), [:lv])[0] || {})[:name]
20
+ assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2039, 4, 10), [:lv])[0] || {})[:name]
21
+
22
+ assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2018, 4, 2), [:lv])[0] || {})[:name]
23
+ assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2019, 4, 22), [:lv])[0] || {})[:name]
24
+ assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2039, 4, 11), [:lv])[0] || {})[:name]
25
+
26
+ assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2018, 5, 1), [:lv])[0] || {})[:name]
27
+ assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2019, 5, 1), [:lv])[0] || {})[:name]
28
+ assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2029, 5, 1), [:lv])[0] || {})[:name]
29
+
30
+ assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2018, 5, 4), [:lv])[0] || {})[:name]
31
+ assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 4), [:lv])[0] || {})[:name]
32
+ assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv])[0] || {})[:name]
33
+
34
+ assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 6), [:lv], [:observed])[0] || {})[:name]
35
+
36
+ assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv], [:observed])[0] || {})[:name]
37
+
38
+ assert_equal "Mātes diena", (Holidays.on(Date.civil(2019, 5, 12), [:lv])[0] || {})[:name]
39
+ assert_equal "Mātes diena", (Holidays.on(Date.civil(2020, 5, 10), [:lv])[0] || {})[:name]
40
+ assert_equal "Mātes diena", (Holidays.on(Date.civil(2029, 5, 13), [:lv])[0] || {})[:name]
41
+
42
+ assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2019, 6, 9), [:lv])[0] || {})[:name]
43
+ assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2020, 5, 31), [:lv])[0] || {})[:name]
44
+ assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2029, 5, 20), [:lv])[0] || {})[:name]
45
+
46
+ assert_equal "Līgo diena", (Holidays.on(Date.civil(2019, 6, 23), [:lv])[0] || {})[:name]
47
+ assert_equal "Līgo diena", (Holidays.on(Date.civil(2020, 6, 23), [:lv])[0] || {})[:name]
48
+ assert_equal "Līgo diena", (Holidays.on(Date.civil(2029, 6, 23), [:lv])[0] || {})[:name]
49
+
50
+ assert_equal "Jāņu diena", (Holidays.on(Date.civil(2019, 6, 24), [:lv])[0] || {})[:name]
51
+ assert_equal "Jāņu diena", (Holidays.on(Date.civil(2020, 6, 24), [:lv])[0] || {})[:name]
52
+ assert_equal "Jāņu diena", (Holidays.on(Date.civil(2029, 6, 24), [:lv])[0] || {})[:name]
53
+
54
+ assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 8), [:lv])[0] || {})[:name]
55
+
56
+ assert_equal "Vispārējo latviešu Dziesmu un deju svētku noslēguma diena", (Holidays.on(Date.civil(2018, 7, 9), [:lv], [:observed])[0] || {})[:name]
57
+
58
+ assert_nil (Holidays.on(Date.civil(2019, 7, 8), [:lv])[0] || {})[:name]
59
+ assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:lv])[0] || {})[:name]
60
+
61
+ assert_equal "Viņa Svētības pāvesta Franciska pastorālās vizītes Latvijā diena", (Holidays.on(Date.civil(2018, 9, 24), [:lv])[0] || {})[:name]
62
+
63
+ assert_nil (Holidays.on(Date.civil(2019, 9, 24), [:lv])[0] || {})[:name]
64
+
65
+ assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2019, 11, 18), [:lv])[0] || {})[:name]
66
+ assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv])[0] || {})[:name]
67
+ assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 18), [:lv])[0] || {})[:name]
68
+
69
+ assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv], [:observed])[0] || {})[:name]
70
+
71
+ assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 19), [:lv], [:observed])[0] || {})[:name]
72
+
73
+ assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2019, 12, 24), [:lv])[0] || {})[:name]
74
+ assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2020, 12, 24), [:lv])[0] || {})[:name]
75
+ assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2029, 12, 24), [:lv])[0] || {})[:name]
76
+
77
+ assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 25), [:lv])[0] || {})[:name]
78
+ assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 25), [:lv])[0] || {})[:name]
79
+ assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 25), [:lv])[0] || {})[:name]
80
+
81
+ assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 26), [:lv])[0] || {})[:name]
82
+ assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 26), [:lv])[0] || {})[:name]
83
+ assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 26), [:lv])[0] || {})[:name]
84
+
85
+ assert_equal "Vecgada diena", (Holidays.on(Date.civil(2019, 12, 31), [:lv])[0] || {})[:name]
86
+ assert_equal "Vecgada diena", (Holidays.on(Date.civil(2020, 12, 31), [:lv])[0] || {})[:name]
87
+ assert_equal "Vecgada diena", (Holidays.on(Date.civil(2029, 12, 31), [:lv])[0] || {})[:name]
88
+
89
+ end
90
+ end
@@ -201,12 +201,24 @@ assert_equal "Remembrance Day", (Holidays.on(Date.civil(2017, 11, 13), [:ca_ab,
201
201
 
202
202
  assert_equal "Canada Day", (Holidays.on(Date.civil(2017, 7, 3), [:ca], [:observed])[0] || {})[:name]
203
203
 
204
- assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 27), [:ca], [:observed])[0] || {})[:name]
204
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 25), [:ca])[0] || {})[:name]
205
+
206
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2018, 12, 25), [:ca])[0] || {})[:name]
207
+
208
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 25), [:ca])[0] || {})[:name]
209
+
210
+ assert_nil (Holidays.on(Date.civil(2022, 12, 25), [:ca], [:observed])[0] || {})[:name]
211
+
212
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2010, 12, 24), [:ca], [:observed])[0] || {})[:name]
205
213
 
206
214
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2012, 12, 25), [:ca], [:observed])[0] || {})[:name]
207
215
 
208
216
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2016, 12, 26), [:ca], [:observed])[0] || {})[:name]
209
217
 
218
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:ca], [:observed])[0] || {})[:name]
219
+
220
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:ca], [:observed])[0] || {})[:name]
221
+
210
222
  assert_equal "Boxing Day", (Holidays.on(Date.civil(2010, 12, 28), [:ca_on], [:observed])[0] || {})[:name]
211
223
  assert_equal "Boxing Day", (Holidays.on(Date.civil(2012, 12, 26), [:ca_on], [:observed])[0] || {})[:name]
212
224
  assert_equal "Boxing Day", (Holidays.on(Date.civil(2015, 12, 28), [:ca_on], [:observed])[0] || {})[:name]
@@ -326,10 +338,6 @@ assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 2, 19), [:us])[0]
326
338
  assert_nil (Holidays.on(Date.civil(2018, 3, 5), [:us])[0] || {})[:name]
327
339
  assert_nil (Holidays.on(Date.civil(2019, 3, 4), [:us])[0] || {})[:name]
328
340
 
329
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2017, 3, 6), [:us_il])[0] || {})[:name]
330
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2018, 3, 5), [:us_il])[0] || {})[:name]
331
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2019, 3, 4), [:us_il])[0] || {})[:name]
332
-
333
341
  assert_nil (Holidays.on(Date.civil(2017, 3, 7), [:us])[0] || {})[:name]
334
342
  assert_nil (Holidays.on(Date.civil(2018, 3, 6), [:us])[0] || {})[:name]
335
343
  assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name]
@@ -366,7 +374,7 @@ assert_equal "Seward's Day", (Holidays.on(Date.civil(2019, 3, 25), [:us_ak])[0]
366
374
  assert_equal "Emancipation Day", (Holidays.on(Date.civil(2022, 4, 15), [:us_dc, :us_ca], [:observed])[0] || {})[:name]
367
375
  assert_equal "Emancipation Day", (Holidays.on(Date.civil(2028, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name]
368
376
 
369
- assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc, :us_ca])[0] || {})[:name]
377
+ assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc])[0] || {})[:name]
370
378
 
371
379
  assert_nil (Holidays.on(Date.civil(2017, 4, 17), [:us])[0] || {})[:name]
372
380
  assert_nil (Holidays.on(Date.civil(2018, 4, 16), [:us])[0] || {})[:name]
@@ -542,9 +550,9 @@ assert_equal "Nevada Day", (Holidays.on(Date.civil(2019, 10, 25), [:us_nv])[0] |
542
550
  assert_nil (Holidays.on(Date.civil(2018, 11, 6), [:us])[0] || {})[:name]
543
551
  assert_nil (Holidays.on(Date.civil(2021, 11, 2), [:us])[0] || {})[:name]
544
552
 
545
- assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
546
- assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
547
- assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
553
+ assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
554
+ assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
555
+ assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
548
556
 
549
557
  assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 10), [:us], [:observed])[0] || {})[:name]
550
558
  assert_equal "Veterans Day", (Holidays.on(Date.civil(2018, 11, 12), [:us], [:observed])[0] || {})[:name]
@@ -594,9 +602,9 @@ assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2028, 12, 22), [
594
602
  assert_nil (Holidays.on(Date.civil(2022, 12, 26), [:us])[0] || {})[:name]
595
603
  assert_nil (Holidays.on(Date.civil(2027, 12, 27), [:us])[0] || {})[:name]
596
604
 
597
- assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 27), [:us], [:observed])[0] || {})[:name]
605
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:us], [:observed])[0] || {})[:name]
598
606
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:us], [:observed])[0] || {})[:name]
599
- assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 27), [:us], [:observed])[0] || {})[:name]
607
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 24), [:us], [:observed])[0] || {})[:name]
600
608
 
601
609
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:us])[0] || {})[:name]
602
610
 
@@ -7,6 +7,12 @@ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
7
7
  class RoDefinitionTests < Test::Unit::TestCase # :nodoc:
8
8
 
9
9
  def test_ro
10
+ assert_nil (Holidays.on(Date.civil(2017, 4, 14), [:ro])[0] || {})[:name]
11
+
12
+ assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2018, 4, 6), [:ro], [:informal])[0] || {})[:name]
13
+
14
+ assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2019, 4, 26), [:ro], [:informal])[0] || {})[:name]
15
+
10
16
  assert_equal "Paștele - duminică", (Holidays.on(Date.civil(1961, 4, 9), [:ro], [:informal])[0] || {})[:name]
11
17
 
12
18
  assert_equal "Paștele - luni", (Holidays.on(Date.civil(1961, 4, 10), [:ro], [:informal])[0] || {})[:name]
@@ -33,8 +39,16 @@ class RoDefinitionTests < Test::Unit::TestCase # :nodoc:
33
39
 
34
40
  assert_equal "Anul nou", (Holidays.on(Date.civil(2014, 1, 2), [:ro], [:informal])[0] || {})[:name]
35
41
 
42
+ assert_equal "Unirea Principatelor Române", (Holidays.on(Date.civil(2017, 1, 24), [:ro], [:informal])[0] || {})[:name]
43
+
44
+ assert_nil (Holidays.on(Date.civil(2016, 1, 24), [:ro])[0] || {})[:name]
45
+
36
46
  assert_equal "Ziua muncii", (Holidays.on(Date.civil(2009, 5, 1), [:ro], [:informal])[0] || {})[:name]
37
47
 
48
+ assert_equal "Ziua Copilului", (Holidays.on(Date.civil(2017, 6, 1), [:ro], [:informal])[0] || {})[:name]
49
+
50
+ assert_nil (Holidays.on(Date.civil(2016, 6, 1), [:ro])[0] || {})[:name]
51
+
38
52
  assert_equal "Adormirea Maicii Domnului", (Holidays.on(Date.civil(2012, 8, 15), [:ro], [:informal])[0] || {})[:name]
39
53
 
40
54
  assert_equal "Sfântul Apostol Andrei", (Holidays.on(Date.civil(2013, 11, 30), [:ro], [:informal])[0] || {})[:name]
@@ -179,11 +179,11 @@ class SouthamericaDefinitionTests < Test::Unit::TestCase # :nodoc:
179
179
 
180
180
  assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2017, 5, 29), [:co])[0] || {})[:name]
181
181
 
182
- assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6, 19), [:co])[0] || {})[:name]
182
+ assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6, 23), [:co])[0] || {})[:name]
183
183
 
184
- assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5, 26), [:co])[0] || {})[:name]
184
+ assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5, 30), [:co])[0] || {})[:name]
185
185
 
186
- assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6, 15), [:co])[0] || {})[:name]
186
+ assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6, 19), [:co])[0] || {})[:name]
187
187
 
188
188
  assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2014, 6, 30), [:co])[0] || {})[:name]
189
189
 
@@ -87,10 +87,6 @@ assert_equal "Presidents' Day", (Holidays.on(Date.civil(2018, 2, 19), [:us])[0]
87
87
  assert_nil (Holidays.on(Date.civil(2018, 3, 5), [:us])[0] || {})[:name]
88
88
  assert_nil (Holidays.on(Date.civil(2019, 3, 4), [:us])[0] || {})[:name]
89
89
 
90
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2017, 3, 6), [:us_il])[0] || {})[:name]
91
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2018, 3, 5), [:us_il])[0] || {})[:name]
92
- assert_equal "Casimir Pulaski Day", (Holidays.on(Date.civil(2019, 3, 4), [:us_il])[0] || {})[:name]
93
-
94
90
  assert_nil (Holidays.on(Date.civil(2017, 3, 7), [:us])[0] || {})[:name]
95
91
  assert_nil (Holidays.on(Date.civil(2018, 3, 6), [:us])[0] || {})[:name]
96
92
  assert_nil (Holidays.on(Date.civil(2019, 3, 5), [:us])[0] || {})[:name]
@@ -127,7 +123,7 @@ assert_equal "Seward's Day", (Holidays.on(Date.civil(2019, 3, 25), [:us_ak])[0]
127
123
  assert_equal "Emancipation Day", (Holidays.on(Date.civil(2022, 4, 15), [:us_dc, :us_ca], [:observed])[0] || {})[:name]
128
124
  assert_equal "Emancipation Day", (Holidays.on(Date.civil(2028, 4, 17), [:us_dc, :us_ca], [:observed])[0] || {})[:name]
129
125
 
130
- assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc, :us_ca])[0] || {})[:name]
126
+ assert_equal "Emancipation Day", (Holidays.on(Date.civil(2017, 4, 16), [:us_dc])[0] || {})[:name]
131
127
 
132
128
  assert_nil (Holidays.on(Date.civil(2017, 4, 17), [:us])[0] || {})[:name]
133
129
  assert_nil (Holidays.on(Date.civil(2018, 4, 16), [:us])[0] || {})[:name]
@@ -303,9 +299,9 @@ assert_equal "Nevada Day", (Holidays.on(Date.civil(2019, 10, 25), [:us_nv])[0] |
303
299
  assert_nil (Holidays.on(Date.civil(2018, 11, 6), [:us])[0] || {})[:name]
304
300
  assert_nil (Holidays.on(Date.civil(2021, 11, 2), [:us])[0] || {})[:name]
305
301
 
306
- assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
307
- assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
308
- assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_il, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
302
+ assert_equal "Election Day", (Holidays.on(Date.civil(2017, 11, 7), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
303
+ assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
304
+ assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :us_in, :us_mt, :us_nj, :us_ny, :us_pa, :us_ri])[0] || {})[:name]
309
305
 
310
306
  assert_equal "Veterans Day", (Holidays.on(Date.civil(2017, 11, 10), [:us], [:observed])[0] || {})[:name]
311
307
  assert_equal "Veterans Day", (Holidays.on(Date.civil(2018, 11, 12), [:us], [:observed])[0] || {})[:name]
@@ -355,9 +351,9 @@ assert_equal "Christmas Eve (Holiday)", (Holidays.on(Date.civil(2028, 12, 22), [
355
351
  assert_nil (Holidays.on(Date.civil(2022, 12, 26), [:us])[0] || {})[:name]
356
352
  assert_nil (Holidays.on(Date.civil(2027, 12, 27), [:us])[0] || {})[:name]
357
353
 
358
- assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 27), [:us], [:observed])[0] || {})[:name]
354
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2021, 12, 24), [:us], [:observed])[0] || {})[:name]
359
355
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2022, 12, 26), [:us], [:observed])[0] || {})[:name]
360
- assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 27), [:us], [:observed])[0] || {})[:name]
356
+ assert_equal "Christmas Day", (Holidays.on(Date.civil(2027, 12, 24), [:us], [:observed])[0] || {})[:name]
361
357
 
362
358
  assert_equal "Christmas Day", (Holidays.on(Date.civil(2017, 12, 25), [:us])[0] || {})[:name]
363
359
 
@@ -1,5 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__)) + '/../../test_helper'
2
2
 
3
+ require 'date'
3
4
  require 'holidays/core_extensions/date'
4
5
 
5
6
  class Date
@@ -114,8 +115,8 @@ class CoreExtensionDateTests < Test::Unit::TestCase
114
115
 
115
116
  def test_datetime_holiday?
116
117
  # in situations with activesupport
117
- assert DateTime.now.to_date.holiday?('test') if DateTime.now.respond_to?(:to_date)
118
- assert DateTime.now.holiday?('test')
118
+ assert DateTime.civil(2008, 1, 1).to_date.holiday?('ca')
119
+ assert DateTime.civil(2008, 1, 1).holiday?('ca')
119
120
  end
120
121
 
121
122
  end
@@ -143,31 +143,25 @@ class GeneratorTests < Test::Unit::TestCase
143
143
  :name => "after_year",
144
144
  :regions => [:custom_year_range_file],
145
145
  :mday => 1,
146
- :year_ranges => [{"after" => 2016}]
146
+ :year_ranges => {:from => 2016}
147
147
  },
148
148
  {
149
149
  :name => "before_year",
150
150
  :regions => [:custom_year_range_file],
151
151
  :mday => 2,
152
- :year_ranges => [{"before" => 2017}]
152
+ :year_ranges => {:until => 2017}
153
153
  },
154
154
  {
155
155
  :name => "between_year",
156
156
  :regions => [:custom_year_range_file],
157
157
  :mday => 3,
158
- :year_ranges => [{"between" => 2016..2018}]
158
+ :year_ranges => {:between => 2016..2018 }
159
159
  },
160
160
  {
161
161
  :name => "limited_year",
162
162
  :regions => [:custom_year_range_file],
163
163
  :mday => 4,
164
- :year_ranges => [{"limited" => [2016,2018,2019]}]
165
- },
166
- {
167
- :name => "multiple_conditions",
168
- :regions => [:custom_year_range_file],
169
- :mday => 5,
170
- :year_ranges => [{"before" => 2015}, {"after" => 2017}]
164
+ :year_ranges => {:limited => [2016,2018,2019]}
171
165
  }
172
166
  ]
173
167
  }
@@ -183,7 +177,7 @@ class GeneratorTests < Test::Unit::TestCase
183
177
 
184
178
  @test_source_generator.expects(:call).with('test', ['test/data/test_custom_year_range_holiday_defs.yaml'], ['parsed tests']).returns('test source')
185
179
 
186
- @module_source_generator.expects(:call).with("test", ["test/data/test_custom_year_range_holiday_defs.yaml"], [:custom_year_range_file], [" 6 => [{:mday => 1, :year_ranges => [{:after => 2016}],:name => \"after_year\", :regions => [:custom_year_range_file]},\n {:mday => 2, :year_ranges => [{:before => 2017}],:name => \"before_year\", :regions => [:custom_year_range_file]},\n {:mday => 3, :year_ranges => [{:between => 2016..2018}],:name => \"between_year\", :regions => [:custom_year_range_file]},\n {:mday => 4, :year_ranges => [{:limited => [2016, 2018, 2019]}],:name => \"limited_year\", :regions => [:custom_year_range_file]},\n {:mday => 5, :year_ranges => [{:before => 2015},{:after => 2017}],:name => \"multiple_conditions\", :regions => [:custom_year_range_file]}]"], "").returns('module_source')
180
+ @module_source_generator.expects(:call).with("test", ["test/data/test_custom_year_range_holiday_defs.yaml"], [:custom_year_range_file], [" 6 => [{:mday => 1, :year_ranges => { :from => 2016 },:name => \"after_year\", :regions => [:custom_year_range_file]},\n {:mday => 2, :year_ranges => { :until => 2017 },:name => \"before_year\", :regions => [:custom_year_range_file]},\n {:mday => 3, :year_ranges => { :between => 2016..2018 },:name => \"between_year\", :regions => [:custom_year_range_file]},\n {:mday => 4, :year_ranges => { :limited => [2016, 2018, 2019] },:name => \"limited_year\", :regions => [:custom_year_range_file]}]"], "").returns('module_source')
187
181
 
188
182
  regions, rules_by_month, custom_methods, tests = @generator.parse_definition_files(files)
189
183
  module_src = @generator.generate_definition_source("test", files, regions, rules_by_month, custom_methods, tests)[0]
@@ -229,11 +223,4 @@ class GeneratorTests < Test::Unit::TestCase
229
223
 
230
224
  assert_equal 'test source', test_src
231
225
  end
232
-
233
- #TODO Missing test scenarios. Adding here so I don't forget when I split this
234
- # apart into smaller components.
235
- #
236
- # 1) If a year_range contains empty entries then we should blow up.
237
- # 2) If year_range contains invalid (i.e. too many types per entry) then
238
- # we should blow up
239
226
  end
@@ -109,7 +109,7 @@ class HolidaysByMonthRepoTests < Test::Unit::TestCase
109
109
  assert_equal(expected, @subject.all)
110
110
  end
111
111
 
112
- def test_add_is_successful_and_updates_regions_to_existing_matching_definitions
112
+ def test_add_is_successful_if_only_region_is_different_and_updates_regions_to_existing_matching_definitions
113
113
  target_holidays = {0 => [:mday => 1, :name => "Test", :regions => [:test2]]}
114
114
 
115
115
  @subject.add(@existing_holidays_by_month)
@@ -152,4 +152,124 @@ class HolidaysByMonthRepoTests < Test::Unit::TestCase
152
152
  @subject.find_by_month(-1)
153
153
  end
154
154
  end
155
+
156
+ def test_add_is_successful_if_only_function_is_different
157
+ initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :function=>"easter(year)", :function_arguments=>[:year]}]}
158
+
159
+ @subject.add(initial_holidays)
160
+
161
+ second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :function=>"orthodox_easter(year)", :function_arguments=>[:year]}]}
162
+ @subject.add(second_holidays)
163
+
164
+ expected = {
165
+ 0 => [
166
+ {
167
+ :function=>"easter(year)",
168
+ :function_arguments=>[:year],
169
+ :mday=>1,
170
+ :name=>"Test",
171
+ :regions=>[:test]
172
+ },
173
+ {
174
+ :function=>"orthodox_easter(year)",
175
+ :function_arguments=>[:year],
176
+ :mday=>1,
177
+ :name=>"Test",
178
+ :regions=>[:test2]
179
+ }
180
+ ]
181
+ }
182
+
183
+ assert_equal(expected, @subject.all)
184
+ end
185
+
186
+ def test_add_is_successful_if_only_function_modifier_is_different
187
+ initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :function=>"easter(year)", :function_modifier=>1, :function_arguments=>[:year]}]}
188
+
189
+ @subject.add(initial_holidays)
190
+
191
+ second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :function=>"easter(year)", :function_modifier=>2, :function_arguments=>[:year]}]}
192
+ @subject.add(second_holidays)
193
+
194
+ expected = {
195
+ 0 => [
196
+ {
197
+ :function=>"easter(year)",
198
+ :function_arguments=>[:year],
199
+ :function_modifier=>1,
200
+ :mday=>1,
201
+ :name=>"Test",
202
+ :regions=>[:test]
203
+ },
204
+ {
205
+ :function=>"easter(year)",
206
+ :function_arguments=>[:year],
207
+ :function_modifier=>2,
208
+ :mday=>1,
209
+ :name=>"Test",
210
+ :regions=>[:test2]
211
+ }
212
+ ]
213
+ }
214
+
215
+ assert_equal(expected, @subject.all)
216
+ end
217
+
218
+ def test_add_is_successful_if_only_observed_is_different
219
+ initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :observed=>"to_weekday_if_weekend(year)", :function_arguments=>[:year]}]}
220
+
221
+ @subject.add(initial_holidays)
222
+
223
+ second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :observed =>"to_friday_if_saturday(year)", :function_arguments=>[:year]}]}
224
+ @subject.add(second_holidays)
225
+
226
+ expected = {
227
+ 0 => [
228
+ {
229
+ :observed =>"to_weekday_if_weekend(year)",
230
+ :function_arguments=>[:year],
231
+ :mday=>1,
232
+ :name=>"Test",
233
+ :regions=>[:test]
234
+ },
235
+ {
236
+ :observed =>"to_friday_if_saturday(year)",
237
+ :function_arguments=>[:year],
238
+ :mday=>1,
239
+ :name=>"Test",
240
+ :regions=>[:test2]
241
+ }
242
+ ]
243
+ }
244
+
245
+ assert_equal(expected, @subject.all)
246
+ end
247
+
248
+ def test_add_is_successful_if_only_year_ranges_is_different
249
+ initial_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test], :year_ranges => {:from => 1990}}]}
250
+
251
+ @subject.add(initial_holidays)
252
+
253
+ second_holidays = {0=> [{:mday => 1, :name=>"Test", :regions=>[:test2], :year_ranges => {:until => 2002}}]}
254
+ @subject.add(second_holidays)
255
+
256
+ expected = {
257
+ 0 => [
258
+ {
259
+ :mday=>1,
260
+ :name=>"Test",
261
+ :regions=>[:test],
262
+ :year_ranges => {:from => 1990}
263
+ },
264
+ {
265
+ :mday=>1,
266
+ :name=>"Test",
267
+ :regions=>[:test2],
268
+ :year_ranges => {:until => 2002}
269
+ }
270
+ ]
271
+ }
272
+
273
+ assert_equal(expected, @subject.all)
274
+ end
155
275
  end