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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/README.md +5 -6
- data/doc/CONTRIBUTING.md +2 -1
- data/holidays.gemspec +5 -5
- data/lib/generated_definitions/MANIFEST +3 -0
- data/lib/generated_definitions/REGIONS.rb +2 -2
- data/lib/generated_definitions/au.rb +1 -1
- data/lib/generated_definitions/ca.rb +14 -12
- data/lib/generated_definitions/ch.rb +13 -1
- data/lib/generated_definitions/cl.rb +5 -5
- data/lib/generated_definitions/de.rb +6 -4
- data/lib/generated_definitions/es.rb +4 -2
- data/lib/generated_definitions/europe.rb +83 -22
- data/lib/generated_definitions/federalreservebanks.rb +1 -1
- data/lib/generated_definitions/gb.rb +6 -4
- data/lib/generated_definitions/hr.rb +8 -6
- data/lib/generated_definitions/hu.rb +3 -2
- data/lib/generated_definitions/it.rb +14 -5
- data/lib/generated_definitions/jp.rb +24 -20
- data/lib/generated_definitions/lu.rb +2 -0
- data/lib/generated_definitions/lv.rb +52 -0
- data/lib/generated_definitions/mx.rb +3 -3
- data/lib/generated_definitions/ng.rb +33 -0
- data/lib/generated_definitions/northamerica.rb +21 -20
- data/lib/generated_definitions/ro.rb +5 -2
- data/lib/generated_definitions/southamerica.rb +5 -5
- data/lib/generated_definitions/th.rb +36 -0
- data/lib/generated_definitions/tr.rb +5 -3
- data/lib/generated_definitions/ua.rb +6 -6
- data/lib/generated_definitions/us.rb +5 -6
- data/lib/holidays.rb +2 -0
- data/lib/holidays/definition/context/generator.rb +20 -34
- data/lib/holidays/definition/repository/holidays_by_month.rb +9 -1
- data/lib/holidays/finder/context/search.rb +34 -31
- data/lib/holidays/finder/rules/year_range.rb +30 -54
- data/lib/holidays/version.rb +1 -1
- data/test/coverage_report.rb +23 -5
- data/test/data/test_custom_year_range_holiday_defs.yaml +6 -10
- data/test/data/test_multiple_regions_with_conflicts_region_1.yaml +38 -0
- data/test/data/test_multiple_regions_with_conflicts_region_2.yaml +38 -0
- data/test/defs/test_defs_ca.rb +31 -1
- data/test/defs/test_defs_ch.rb +4 -0
- data/test/defs/test_defs_co.rb +3 -3
- data/test/defs/test_defs_de.rb +6 -0
- data/test/defs/test_defs_es.rb +2 -0
- data/test/defs/test_defs_europe.rb +160 -11
- data/test/defs/test_defs_federalreservebanks.rb +137 -3
- data/test/defs/test_defs_gb.rb +16 -0
- data/test/defs/test_defs_hr.rb +6 -6
- data/test/defs/test_defs_hu.rb +12 -4
- data/test/defs/test_defs_it.rb +20 -0
- data/test/defs/test_defs_lu.rb +6 -0
- data/test/defs/test_defs_lv.rb +90 -0
- data/test/defs/test_defs_ng.rb +29 -0
- data/test/defs/test_defs_northamerica.rb +37 -11
- data/test/defs/test_defs_ro.rb +14 -0
- data/test/defs/test_defs_southamerica.rb +3 -3
- data/test/defs/test_defs_th.rb +33 -0
- data/test/defs/test_defs_tr.rb +7 -0
- data/test/defs/test_defs_us.rb +6 -10
- data/test/holidays/core_extensions/test_date.rb +3 -2
- data/test/holidays/definition/context/test_generator.rb +5 -18
- data/test/holidays/definition/repository/test_holidays_by_month.rb +121 -1
- data/test/holidays/finder/rules/test_year_range.rb +43 -47
- data/test/integration/test_available_regions.rb +1 -1
- data/test/integration/test_custom_year_range_holidays.rb +0 -7
- data/test/integration/test_holidays.rb +1 -23
- data/test/integration/test_holidays_between.rb +10 -0
- data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
- data/test/integration/test_nonstandard_regions.rb +1 -1
- metadata +27 -13
data/test/defs/test_defs_ro.rb
CHANGED
@@ -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,
|
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,
|
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,
|
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
|
|
@@ -0,0 +1,33 @@
|
|
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/th.yaml
|
7
|
+
class ThDefinitionTests < Test::Unit::TestCase # :nodoc:
|
8
|
+
|
9
|
+
def test_th
|
10
|
+
assert_equal "วันขึ้นปีใหม่", (Holidays.on(Date.civil(20019, 1, 1), [:th], [:informal])[0] || {})[:name]
|
11
|
+
|
12
|
+
assert_equal "วันจักรี", (Holidays.on(Date.civil(2019, 4, 6), [:th], [:informal])[0] || {})[:name]
|
13
|
+
|
14
|
+
assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 13), [:th], [:informal])[0] || {})[:name]
|
15
|
+
assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 14), [:th], [:informal])[0] || {})[:name]
|
16
|
+
assert_equal "วันสงกรานต์", (Holidays.on(Date.civil(2019, 4, 15), [:th], [:informal])[0] || {})[:name]
|
17
|
+
|
18
|
+
assert_equal "วันเฉลิมพระชนมพรรษาสมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร", (Holidays.on(Date.civil(2019, 7, 28), [:th], [:informal])[0] || {})[:name]
|
19
|
+
|
20
|
+
assert_equal "วันเฉลิมพระชนมพรรษาสมเด็จพระนางเจ้าสิริกิติ์ พระบรมราชินีนาถในรัชกาลที่ ๙", (Holidays.on(Date.civil(2007, 8, 12), [:th], [:informal])[0] || {})[:name]
|
21
|
+
|
22
|
+
assert_equal "วันคล้ายวันสวรรคตพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", (Holidays.on(Date.civil(2019, 10, 13), [:th], [:informal])[0] || {})[:name]
|
23
|
+
|
24
|
+
assert_equal "วันปิยมหาราช", (Holidays.on(Date.civil(2019, 10, 23), [:th], [:informal])[0] || {})[:name]
|
25
|
+
|
26
|
+
assert_equal "วันคล้ายวันเฉลิมพระชนมพรรษาพระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดช บรมนาถบพิตร", (Holidays.on(Date.civil(2019, 12, 5), [:th], [:informal])[0] || {})[:name]
|
27
|
+
|
28
|
+
assert_equal "วันรัฐธรรมนูญ", (Holidays.on(Date.civil(2019, 12, 10), [:th], [:informal])[0] || {})[:name]
|
29
|
+
|
30
|
+
assert_equal "วันสิ้นปี", (Holidays.on(Date.civil(2019, 12, 31), [:th], [:informal])[0] || {})[:name]
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/test/defs/test_defs_tr.rb
CHANGED
@@ -22,32 +22,39 @@ class TrDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
22
22
|
assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2017, 6, 25), [:tr])[0] || {})[:name]
|
23
23
|
assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2018, 6, 15), [:tr])[0] || {})[:name]
|
24
24
|
assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2019, 6, 4), [:tr])[0] || {})[:name]
|
25
|
+
assert_equal "Ramazan Bayramı", (Holidays.on(Date.civil(2020, 5, 24), [:tr])[0] || {})[:name]
|
25
26
|
|
26
27
|
assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2017, 6, 26), [:tr])[0] || {})[:name]
|
27
28
|
assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2018, 6, 16), [:tr])[0] || {})[:name]
|
28
29
|
assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2019, 6, 5), [:tr])[0] || {})[:name]
|
30
|
+
assert_equal "Ramazan Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2020, 5, 25), [:tr])[0] || {})[:name]
|
29
31
|
|
30
32
|
assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2017, 6, 27), [:tr])[0] || {})[:name]
|
31
33
|
assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2018, 6, 17), [:tr])[0] || {})[:name]
|
32
34
|
assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2019, 6, 6), [:tr])[0] || {})[:name]
|
35
|
+
assert_equal "Ramazan Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2020, 5, 26), [:tr])[0] || {})[:name]
|
33
36
|
|
34
37
|
assert_equal "Demokrasi ve Milli Birlik Günü", (Holidays.on(Date.civil(2017, 7, 15), [:tr])[0] || {})[:name]
|
35
38
|
|
36
39
|
assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2017, 9, 1), [:tr])[0] || {})[:name]
|
37
40
|
assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2018, 8, 21), [:tr])[0] || {})[:name]
|
38
41
|
assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2019, 8, 11), [:tr])[0] || {})[:name]
|
42
|
+
assert_equal "Kurban Bayramı", (Holidays.on(Date.civil(2020, 7, 31), [:tr])[0] || {})[:name]
|
39
43
|
|
40
44
|
assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2017, 9, 2), [:tr])[0] || {})[:name]
|
41
45
|
assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2018, 8, 22), [:tr])[0] || {})[:name]
|
42
46
|
assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2019, 8, 12), [:tr])[0] || {})[:name]
|
47
|
+
assert_equal "Kurban Bayramı (ikinci tatil)", (Holidays.on(Date.civil(2020, 8, 1), [:tr])[0] || {})[:name]
|
43
48
|
|
44
49
|
assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2017, 9, 3), [:tr])[0] || {})[:name]
|
45
50
|
assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2018, 8, 23), [:tr])[0] || {})[:name]
|
46
51
|
assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2019, 8, 13), [:tr])[0] || {})[:name]
|
52
|
+
assert_equal "Kurban Bayramı (üçüncü tatil)", (Holidays.on(Date.civil(2020, 8, 2), [:tr])[0] || {})[:name]
|
47
53
|
|
48
54
|
assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2017, 9, 4), [:tr])[0] || {})[:name]
|
49
55
|
assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2018, 8, 24), [:tr])[0] || {})[:name]
|
50
56
|
assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2019, 8, 14), [:tr])[0] || {})[:name]
|
57
|
+
assert_equal "Kurban Bayramı (dördüncü tatil)", (Holidays.on(Date.civil(2020, 8, 3), [:tr])[0] || {})[:name]
|
51
58
|
|
52
59
|
end
|
53
60
|
end
|
data/test/defs/test_defs_us.rb
CHANGED
@@ -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
|
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, :
|
307
|
-
assert_equal "Election Day", (Holidays.on(Date.civil(2018, 11, 6), [:us_de, :us_hi, :
|
308
|
-
assert_equal "Election Day", (Holidays.on(Date.civil(2021, 11, 2), [:us_de, :us_hi, :
|
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,
|
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,
|
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.
|
118
|
-
assert DateTime.
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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,
|
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
|
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
|
@@ -5,7 +5,7 @@ require 'holidays/finder/rules/year_range'
|
|
5
5
|
class FinderRulesYearRangeTests < Test::Unit::TestCase
|
6
6
|
def setup
|
7
7
|
@year = 2015
|
8
|
-
@year_ranges =
|
8
|
+
@year_ranges = {between: 1996..2002}
|
9
9
|
@subject = Holidays::Finder::Rules::YearRange
|
10
10
|
end
|
11
11
|
|
@@ -29,13 +29,13 @@ class FinderRulesYearRangeTests < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_returns_error_if_year_ranges_contains_only_non_hash
|
32
|
-
@year_ranges =
|
32
|
+
@year_ranges = :test
|
33
33
|
assert_raises ArgumentError do
|
34
34
|
@subject.call(@year, @year_ranges)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
38
|
+
def test_returns_error_if_year_ranges_is_empty
|
39
39
|
@year_ranges = [{}, {}]
|
40
40
|
assert_raises ArgumentError do
|
41
41
|
@subject.call(@year, @year_ranges)
|
@@ -43,128 +43,124 @@ class FinderRulesYearRangeTests < Test::Unit::TestCase
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_returns_error_if_year_range_contains_a_hash_with_multiple_entries
|
46
|
-
@year_ranges =
|
46
|
+
@year_ranges = {:between => 1996..2002, :after => 2002}
|
47
47
|
assert_raises ArgumentError do
|
48
48
|
@subject.call(@year, @year_ranges)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_returns_error_if_year_range_contains_unrecognized_operator
|
53
|
-
@year_ranges =
|
53
|
+
@year_ranges = {:what => 2002}
|
54
54
|
assert_raises ArgumentError do
|
55
55
|
@subject.call(@year, @year_ranges)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
60
|
-
@year_ranges =
|
59
|
+
def test_returns_error_if_until_operator_and_value_is_not_a_number
|
60
|
+
@year_ranges = {until: "bad"}
|
61
61
|
assert_raises ArgumentError do
|
62
62
|
@subject.call(@year, @year_ranges)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def
|
67
|
-
@year_ranges =
|
66
|
+
def test_returns_true_if_until_operator_and_target_is_until
|
67
|
+
@year_ranges = {until: 2000}
|
68
68
|
assert_equal(true, @subject.call(1999, @year_ranges))
|
69
69
|
end
|
70
70
|
|
71
|
-
def
|
72
|
-
@year_ranges =
|
71
|
+
def test_returns_true_if_until_operator_and_target_is_equal
|
72
|
+
@year_ranges = {until: 2000}
|
73
73
|
assert_equal(true, @subject.call(2000, @year_ranges))
|
74
74
|
end
|
75
75
|
|
76
|
-
def
|
77
|
-
@year_ranges =
|
76
|
+
def test_returns_false_if_until_operator_and_target_is_after
|
77
|
+
@year_ranges = {until: 2000}
|
78
78
|
assert_equal(false, @subject.call(2001, @year_ranges))
|
79
79
|
end
|
80
80
|
|
81
|
-
def
|
82
|
-
@year_ranges =
|
81
|
+
def test_returns_error_if_from_operator_with_bad_value
|
82
|
+
@year_ranges = {from: "bad"}
|
83
83
|
assert_raises ArgumentError do
|
84
84
|
@subject.call(@year, @year_ranges)
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
-
def
|
89
|
-
@year_ranges =
|
88
|
+
def test_returns_false_if_from_operator_and_target_is_before
|
89
|
+
@year_ranges = {from: 2000}
|
90
90
|
assert_equal(false, @subject.call(1999, @year_ranges))
|
91
91
|
end
|
92
92
|
|
93
|
-
def
|
94
|
-
@year_ranges =
|
93
|
+
def test_returns_true_if_from_operator_and_target_is_equal
|
94
|
+
@year_ranges = {from: 2000}
|
95
95
|
assert_equal(true, @subject.call(2000, @year_ranges))
|
96
96
|
end
|
97
97
|
|
98
|
-
def
|
99
|
-
@year_ranges =
|
98
|
+
def test_returns_true_if_from_operator_and_target_is_after
|
99
|
+
@year_ranges = {from: 2000}
|
100
100
|
assert_equal(true, @subject.call(2001, @year_ranges))
|
101
101
|
end
|
102
102
|
|
103
103
|
def test_returns_error_if_limited_operator_and_bad_value
|
104
|
-
@year_ranges =
|
104
|
+
@year_ranges = {limited: "bad"}
|
105
|
+
assert_raises ArgumentError do
|
106
|
+
@subject.call(@year, @year_ranges)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_returns_error_if_limited_operator_with_empty_array
|
111
|
+
@year_ranges = {limited: []}
|
112
|
+
assert_raises ArgumentError do
|
113
|
+
@subject.call(@year, @year_ranges)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_returns_error_if_limited_operator_with_array_containing_non_integer_value
|
118
|
+
@year_ranges = {limited: ["bad"]}
|
105
119
|
assert_raises ArgumentError do
|
106
120
|
@subject.call(@year, @year_ranges)
|
107
121
|
end
|
108
122
|
end
|
109
123
|
|
110
124
|
def test_returns_true_if_limited_operator_and_value_is_number_that_matches_target
|
111
|
-
@year_ranges =
|
125
|
+
@year_ranges = {limited: [2002]}
|
112
126
|
assert_equal(true, @subject.call(2002, @year_ranges))
|
113
127
|
end
|
114
128
|
|
115
129
|
def test_returns_false_if_limited_operator_and_target_is_not_included
|
116
|
-
@year_ranges =
|
130
|
+
@year_ranges = {limited: [1998,2000]}
|
117
131
|
assert_equal(false, @subject.call(1997, @year_ranges))
|
118
132
|
assert_equal(false, @subject.call(1999, @year_ranges))
|
119
133
|
assert_equal(false, @subject.call(2002, @year_ranges))
|
120
134
|
end
|
121
135
|
|
122
136
|
def test_returns_true_if_limited_operator_and_target_is_included
|
123
|
-
@year_ranges =
|
137
|
+
@year_ranges = {limited: [1998, 2000, 2002]}
|
124
138
|
assert_equal(true, @subject.call(1998, @year_ranges))
|
125
139
|
assert_equal(true, @subject.call(2000, @year_ranges))
|
126
140
|
assert_equal(true, @subject.call(2002, @year_ranges))
|
127
141
|
end
|
128
142
|
|
129
143
|
def test_returns_error_if_between_operator_and_value_not_a_range
|
130
|
-
@year_ranges =
|
144
|
+
@year_ranges = {between: 2000}
|
131
145
|
assert_raises ArgumentError do
|
132
146
|
@subject.call(2003, @year_ranges)
|
133
147
|
end
|
134
148
|
end
|
135
149
|
|
136
150
|
def test_returns_false_if_between_operator_and_target_is_before
|
137
|
-
@year_ranges =
|
151
|
+
@year_ranges = {between: 1998..2002}
|
138
152
|
assert_equal(false, @subject.call(1997, @year_ranges))
|
139
153
|
end
|
140
154
|
|
141
155
|
def test_returns_true_if_between_operator_and_target_is_covered
|
142
|
-
@year_ranges =
|
156
|
+
@year_ranges = {between: 1998..2002}
|
143
157
|
assert_equal(true, @subject.call(1998, @year_ranges))
|
144
158
|
assert_equal(true, @subject.call(2000, @year_ranges))
|
145
159
|
assert_equal(true, @subject.call(2002, @year_ranges))
|
146
160
|
end
|
147
161
|
|
148
162
|
def test_returns_false_if_between_operator_and_target_is_after
|
149
|
-
@year_ranges =
|
163
|
+
@year_ranges = {between: 1998..2002}
|
150
164
|
assert_equal(false, @subject.call(2003, @year_ranges))
|
151
165
|
end
|
152
|
-
|
153
|
-
def test_returns_false_multiple_nonmatching_operators
|
154
|
-
@year_ranges = [{between: 1998..2002}, {:after => 2005}]
|
155
|
-
assert_equal(false, @subject.call(2003, @year_ranges))
|
156
|
-
|
157
|
-
@year_ranges = [{before: 1995}, {:limited => [1990, 1991, 1992]}]
|
158
|
-
assert_equal(false, @subject.call(1996, @year_ranges))
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_returns_true_multiple_operators_all_matching
|
162
|
-
@year_ranges = [{between: 1998..2002}, {:limited=> [2000, 2001]}]
|
163
|
-
assert_equal(true, @subject.call(2001, @year_ranges))
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_returns_true_if_multiple_operators_and_only_one_matches
|
167
|
-
@year_ranges = [{before: 2015}, {:after=> 2017}]
|
168
|
-
assert_equal(true, @subject.call(2001, @year_ranges))
|
169
|
-
end
|
170
166
|
end
|