holidays 7.0.0 → 8.3.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +5 -6
  4. data/doc/CONTRIBUTING.md +2 -1
  5. data/holidays.gemspec +5 -5
  6. data/lib/generated_definitions/MANIFEST +3 -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 +14 -12
  10. data/lib/generated_definitions/ch.rb +13 -1
  11. data/lib/generated_definitions/cl.rb +5 -5
  12. data/lib/generated_definitions/de.rb +6 -4
  13. data/lib/generated_definitions/es.rb +4 -2
  14. data/lib/generated_definitions/europe.rb +83 -22
  15. data/lib/generated_definitions/federalreservebanks.rb +1 -1
  16. data/lib/generated_definitions/gb.rb +6 -4
  17. data/lib/generated_definitions/hr.rb +8 -6
  18. data/lib/generated_definitions/hu.rb +3 -2
  19. data/lib/generated_definitions/it.rb +14 -5
  20. data/lib/generated_definitions/jp.rb +24 -20
  21. data/lib/generated_definitions/lu.rb +2 -0
  22. data/lib/generated_definitions/lv.rb +52 -0
  23. data/lib/generated_definitions/mx.rb +3 -3
  24. data/lib/generated_definitions/ng.rb +33 -0
  25. data/lib/generated_definitions/northamerica.rb +21 -20
  26. data/lib/generated_definitions/ro.rb +5 -2
  27. data/lib/generated_definitions/southamerica.rb +5 -5
  28. data/lib/generated_definitions/th.rb +36 -0
  29. data/lib/generated_definitions/tr.rb +5 -3
  30. data/lib/generated_definitions/ua.rb +6 -6
  31. data/lib/generated_definitions/us.rb +5 -6
  32. data/lib/holidays.rb +2 -0
  33. data/lib/holidays/definition/context/generator.rb +20 -34
  34. data/lib/holidays/definition/repository/holidays_by_month.rb +9 -1
  35. data/lib/holidays/finder/context/search.rb +34 -31
  36. data/lib/holidays/finder/rules/year_range.rb +30 -54
  37. data/lib/holidays/version.rb +1 -1
  38. data/test/coverage_report.rb +23 -5
  39. data/test/data/test_custom_year_range_holiday_defs.yaml +6 -10
  40. data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
  41. data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
  42. data/test/defs/test_defs_ca.rb +31 -1
  43. data/test/defs/test_defs_ch.rb +4 -0
  44. data/test/defs/test_defs_co.rb +3 -3
  45. data/test/defs/test_defs_de.rb +6 -0
  46. data/test/defs/test_defs_es.rb +2 -0
  47. data/test/defs/test_defs_europe.rb +160 -11
  48. data/test/defs/test_defs_federalreservebanks.rb +137 -3
  49. data/test/defs/test_defs_gb.rb +16 -0
  50. data/test/defs/test_defs_hr.rb +6 -6
  51. data/test/defs/test_defs_hu.rb +12 -4
  52. data/test/defs/test_defs_it.rb +20 -0
  53. data/test/defs/test_defs_lu.rb +6 -0
  54. data/test/defs/test_defs_lv.rb +90 -0
  55. data/test/defs/test_defs_ng.rb +29 -0
  56. data/test/defs/test_defs_northamerica.rb +37 -11
  57. data/test/defs/test_defs_ro.rb +14 -0
  58. data/test/defs/test_defs_southamerica.rb +3 -3
  59. data/test/defs/test_defs_th.rb +33 -0
  60. data/test/defs/test_defs_tr.rb +7 -0
  61. data/test/defs/test_defs_us.rb +6 -10
  62. data/test/holidays/core_extensions/test_date.rb +3 -2
  63. data/test/holidays/definition/context/test_generator.rb +5 -18
  64. data/test/holidays/definition/repository/test_holidays_by_month.rb +121 -1
  65. data/test/holidays/finder/rules/test_year_range.rb +43 -47
  66. data/test/integration/test_available_regions.rb +1 -1
  67. data/test/integration/test_custom_year_range_holidays.rb +0 -7
  68. data/test/integration/test_holidays.rb +1 -23
  69. data/test/integration/test_holidays_between.rb +10 -0
  70. data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
  71. data/test/integration/test_nonstandard_regions.rb +1 -1
  72. metadata +27 -13
@@ -18,6 +18,6 @@ class AvailableRegionsTests < Test::Unit::TestCase
18
18
  # This test might fail if we add new regions. Since this is an integration test
19
19
  # I am fine with that!
20
20
  def test_available_regions_returns_correct_number_of_regions
21
- assert_equal 242, Holidays.available_regions.count
21
+ assert_equal 257, Holidays.available_regions.count
22
22
  end
23
23
  end
@@ -32,11 +32,4 @@ class CustomYearRangeHolidaysTest < Test::Unit::TestCase
32
32
  assert_not_equal [], Holidays.on(Date.civil(2019,6,4), :custom_year_range_file)
33
33
  assert_equal [], Holidays.on(Date.civil(2020,6,4), :custom_year_range_file)
34
34
  end
35
-
36
- def test_multiple_condition
37
- Holidays.load_custom('test/data/test_custom_year_range_holiday_defs.yaml')
38
- assert_not_equal [], Holidays.on(Date.civil(2015,6,5), :custom_year_range_file)
39
- assert_equal [], Holidays.on(Date.civil(2016,6,5), :custom_year_range_file)
40
- assert_not_equal [], Holidays.on(Date.civil(2017,6,5), :custom_year_range_file)
41
- end
42
35
  end
@@ -142,28 +142,6 @@ class HolidaysTests < Test::Unit::TestCase
142
142
  assert_empty holidays
143
143
  end
144
144
 
145
- def test_year_holidays_feb_29_on_non_leap_year
146
- assert_raises ArgumentError do
147
- Holidays.year_holidays([:ca_on], Date.civil(2015, 2, 29))
148
- end
149
-
150
- assert_raises ArgumentError do
151
- Holidays.year_holidays([:ca_on], Date.civil(2019, 2, 29))
152
- end
153
-
154
- assert_raises ArgumentError do
155
- Holidays.year_holidays([:ca_on], Date.civil(2021, 2, 29))
156
- end
157
-
158
- assert_raises ArgumentError do
159
- Holidays.year_holidays([:us], Date.civil(2023, 2, 29))
160
- end
161
-
162
- assert_raises ArgumentError do
163
- Holidays.year_holidays([:ca_on], Date.civil(2025, 2, 29))
164
- end
165
- end
166
-
167
145
  def test_year_holidays_random_years
168
146
  # Should be 1 less holiday, as Family day didn't exist in Ontario in 1990
169
147
  holidays = Holidays.year_holidays([:ca_on], Date.civil(1990, 1, 1))
@@ -266,6 +244,6 @@ class HolidaysTests < Test::Unit::TestCase
266
244
 
267
245
  def test_load_all
268
246
  Holidays.load_all
269
- assert_equal 242, Holidays.available_regions.count
247
+ assert_equal 257, Holidays.available_regions.count
270
248
  end
271
249
  end
@@ -41,6 +41,16 @@ class HolidaysBetweenTests < Test::Unit::TestCase
41
41
  end
42
42
  end
43
43
 
44
+ def test_between_raises_error_if_end_date_is_before_start_date
45
+ assert_raise ArgumentError do
46
+ @subject.call(Date.civil(2019, 2, 1), Date.civil(2019, 1, 1), :us)
47
+ end
48
+
49
+ assert_raise ArgumentError do
50
+ @subject.call(Date.civil(2008,7,2), Date.civil(2000,7,2), :ca)
51
+ end
52
+ end
53
+
44
54
  def test_cached_holidays_are_returned_if_present
45
55
  start_date = Date.civil(2015, 1, 1)
46
56
  end_date = Date.civil(2015, 1, 31)
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
2
+
3
+ # See https://github.com/holidays/holidays/issues/344 for more info on why
4
+ # these tests exist.
5
+ class MultipleRegionsWithConflictsTests < Test::Unit::TestCase
6
+
7
+ def test_corpus_christi_returns_correctly_for_co_even_if_br_is_loaded_first
8
+ result = Holidays.on(Date.new(2014, 6, 19), :br)
9
+ assert_equal 1, result.count
10
+ assert_equal 'Corpus Christi', result.first[:name]
11
+
12
+ result = Holidays.on(Date.new(2014, 6, 23), :co)
13
+ assert_equal 1, result.count
14
+ assert_equal 'Corpus Christi', result.first[:name]
15
+ end
16
+
17
+ def test_custom_loaded_region_returns_correct_value_with_function_modifier_conflict_even_if_conflict_definition_is_loaded_first
18
+ Holidays.load_custom('test/data/test_multiple_regions_with_conflicts_region_1.yaml')
19
+ result = Holidays.on(Date.new(2019, 6, 20), :multiple_with_conflict_1)
20
+ assert_equal 1, result.count
21
+ assert_equal 'With Function Modifier', result.first[:name]
22
+
23
+ Holidays.load_custom('test/data/test_multiple_regions_with_conflicts_region_2.yaml')
24
+ result = Holidays.on(Date.new(2019, 6, 24), :multiple_with_conflict_2)
25
+ assert_equal 1, result.count
26
+ assert_equal 'With Function Modifier', result.first[:name]
27
+ end
28
+
29
+ end
@@ -14,7 +14,7 @@ class NonstandardRegionsHolidaysTests < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  def test_federalreservebanks_independence_day
17
- h = Holidays.on(Date.new(2020,7,3), :federalreservebanks, :observed)
17
+ h = Holidays.on(Date.new(2019,7,4), :federalreservebanks, :observed)
18
18
  assert_equal 'Independence Day', h[0][:name]
19
19
  end
20
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holidays
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-09 00:00:00.000000000 Z
12
+ date: 2020-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.16'
20
+ version: '2'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.16'
27
+ version: '2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -59,42 +59,42 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '3.2'
62
+ version: '3'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '3.2'
69
+ version: '3'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: mocha
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.7'
76
+ version: '1'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '1.7'
83
+ version: '1'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: pry
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0.11'
90
+ version: '0.12'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.11'
97
+ version: '0.12'
98
98
  description: A collection of Ruby methods to deal with statutory and other holidays.
99
99
  You deserve a holiday!
100
100
  email:
@@ -158,12 +158,14 @@ files:
158
158
  - lib/generated_definitions/li.rb
159
159
  - lib/generated_definitions/lt.rb
160
160
  - lib/generated_definitions/lu.rb
161
+ - lib/generated_definitions/lv.rb
161
162
  - lib/generated_definitions/ma.rb
162
163
  - lib/generated_definitions/mt_en.rb
163
164
  - lib/generated_definitions/mt_mt.rb
164
165
  - lib/generated_definitions/mx.rb
165
166
  - lib/generated_definitions/my.rb
166
167
  - lib/generated_definitions/nerc.rb
168
+ - lib/generated_definitions/ng.rb
167
169
  - lib/generated_definitions/nl.rb
168
170
  - lib/generated_definitions/no.rb
169
171
  - lib/generated_definitions/northamerica.rb
@@ -183,6 +185,7 @@ files:
183
185
  - lib/generated_definitions/si.rb
184
186
  - lib/generated_definitions/sk.rb
185
187
  - lib/generated_definitions/southamerica.rb
188
+ - lib/generated_definitions/th.rb
186
189
  - lib/generated_definitions/tn.rb
187
190
  - lib/generated_definitions/tr.rb
188
191
  - lib/generated_definitions/ua.rb
@@ -241,6 +244,8 @@ files:
241
244
  - test/data/test_custom_year_range_holiday_defs.yaml
242
245
  - test/data/test_invalid_region.rb
243
246
  - test/data/test_multiple_custom_holiday_defs.yaml
247
+ - test/data/test_multiple_regions_with_conflicts_region_1.yaml
248
+ - test/data/test_multiple_regions_with_conflicts_region_2.yaml
244
249
  - test/data/test_region.rb
245
250
  - test/data/test_single_custom_holiday_defs.yaml
246
251
  - test/data/test_single_custom_holiday_with_custom_procs.yaml
@@ -283,12 +288,14 @@ files:
283
288
  - test/defs/test_defs_li.rb
284
289
  - test/defs/test_defs_lt.rb
285
290
  - test/defs/test_defs_lu.rb
291
+ - test/defs/test_defs_lv.rb
286
292
  - test/defs/test_defs_ma.rb
287
293
  - test/defs/test_defs_mt_en.rb
288
294
  - test/defs/test_defs_mt_mt.rb
289
295
  - test/defs/test_defs_mx.rb
290
296
  - test/defs/test_defs_my.rb
291
297
  - test/defs/test_defs_nerc.rb
298
+ - test/defs/test_defs_ng.rb
292
299
  - test/defs/test_defs_nl.rb
293
300
  - test/defs/test_defs_no.rb
294
301
  - test/defs/test_defs_northamerica.rb
@@ -308,6 +315,7 @@ files:
308
315
  - test/defs/test_defs_si.rb
309
316
  - test/defs/test_defs_sk.rb
310
317
  - test/defs/test_defs_southamerica.rb
318
+ - test/defs/test_defs_th.rb
311
319
  - test/defs/test_defs_tn.rb
312
320
  - test/defs/test_defs_tr.rb
313
321
  - test/defs/test_defs_ua.rb
@@ -362,6 +370,7 @@ files:
362
370
  - test/integration/test_holidays.rb
363
371
  - test/integration/test_holidays_between.rb
364
372
  - test/integration/test_multiple_regions.rb
373
+ - test/integration/test_multiple_regions_with_conflict.rb
365
374
  - test/integration/test_nonstandard_regions.rb
366
375
  - test/test_helper.rb
367
376
  homepage: https://github.com/holidays/holidays
@@ -376,15 +385,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
376
385
  requirements:
377
386
  - - "~>"
378
387
  - !ruby/object:Gem::Version
379
- version: '2.2'
388
+ version: '2.4'
380
389
  required_rubygems_version: !ruby/object:Gem::Requirement
381
390
  requirements:
382
391
  - - ">="
383
392
  - !ruby/object:Gem::Version
384
393
  version: '0'
385
394
  requirements: []
386
- rubyforge_project:
387
- rubygems_version: 2.7.6
395
+ rubygems_version: 3.1.2
388
396
  signing_key:
389
397
  specification_version: 4
390
398
  summary: A collection of Ruby methods to deal with statutory and other holidays.
@@ -395,6 +403,8 @@ test_files:
395
403
  - test/data/test_custom_year_range_holiday_defs.yaml
396
404
  - test/data/test_invalid_region.rb
397
405
  - test/data/test_multiple_custom_holiday_defs.yaml
406
+ - test/data/test_multiple_regions_with_conflicts_region_1.yaml
407
+ - test/data/test_multiple_regions_with_conflicts_region_2.yaml
398
408
  - test/data/test_region.rb
399
409
  - test/data/test_single_custom_holiday_defs.yaml
400
410
  - test/data/test_single_custom_holiday_with_custom_procs.yaml
@@ -437,12 +447,14 @@ test_files:
437
447
  - test/defs/test_defs_li.rb
438
448
  - test/defs/test_defs_lt.rb
439
449
  - test/defs/test_defs_lu.rb
450
+ - test/defs/test_defs_lv.rb
440
451
  - test/defs/test_defs_ma.rb
441
452
  - test/defs/test_defs_mt_en.rb
442
453
  - test/defs/test_defs_mt_mt.rb
443
454
  - test/defs/test_defs_mx.rb
444
455
  - test/defs/test_defs_my.rb
445
456
  - test/defs/test_defs_nerc.rb
457
+ - test/defs/test_defs_ng.rb
446
458
  - test/defs/test_defs_nl.rb
447
459
  - test/defs/test_defs_no.rb
448
460
  - test/defs/test_defs_northamerica.rb
@@ -462,6 +474,7 @@ test_files:
462
474
  - test/defs/test_defs_si.rb
463
475
  - test/defs/test_defs_sk.rb
464
476
  - test/defs/test_defs_southamerica.rb
477
+ - test/defs/test_defs_th.rb
465
478
  - test/defs/test_defs_tn.rb
466
479
  - test/defs/test_defs_tr.rb
467
480
  - test/defs/test_defs_ua.rb
@@ -516,5 +529,6 @@ test_files:
516
529
  - test/integration/test_holidays.rb
517
530
  - test/integration/test_holidays_between.rb
518
531
  - test/integration/test_multiple_regions.rb
532
+ - test/integration/test_multiple_regions_with_conflict.rb
519
533
  - test/integration/test_nonstandard_regions.rb
520
534
  - test/test_helper.rb