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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +3 -4
- data/doc/CONTRIBUTING.md +2 -1
- data/holidays.gemspec +5 -5
- data/lib/generated_definitions/MANIFEST +1 -0
- data/lib/generated_definitions/REGIONS.rb +2 -2
- data/lib/generated_definitions/au.rb +1 -1
- data/lib/generated_definitions/ca.rb +11 -10
- data/lib/generated_definitions/cl.rb +5 -5
- data/lib/generated_definitions/de.rb +3 -3
- data/lib/generated_definitions/es.rb +2 -1
- data/lib/generated_definitions/europe.rb +60 -16
- data/lib/generated_definitions/gb.rb +5 -3
- data/lib/generated_definitions/hu.rb +3 -2
- data/lib/generated_definitions/it.rb +14 -5
- data/lib/generated_definitions/jp.rb +21 -21
- data/lib/generated_definitions/lv.rb +52 -0
- data/lib/generated_definitions/northamerica.rb +15 -15
- data/lib/generated_definitions/ro.rb +5 -2
- data/lib/generated_definitions/southamerica.rb +5 -5
- data/lib/generated_definitions/tr.rb +1 -1
- 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 +13 -1
- data/test/defs/test_defs_co.rb +3 -3
- data/test/defs/test_defs_europe.rb +126 -5
- data/test/defs/test_defs_hu.rb +12 -4
- data/test/defs/test_defs_it.rb +20 -0
- data/test/defs/test_defs_lv.rb +90 -0
- data/test/defs/test_defs_northamerica.rb +19 -11
- data/test/defs/test_defs_ro.rb +14 -0
- data/test/defs/test_defs_southamerica.rb +3 -3
- 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 -1
- data/test/integration/test_holidays_between.rb +10 -0
- data/test/integration/test_multiple_regions_with_conflict.rb +29 -0
- metadata +21 -13
@@ -41,7 +41,15 @@ module Holidays
|
|
41
41
|
private
|
42
42
|
|
43
43
|
def definition_exists?(existing_def, target_def)
|
44
|
-
existing_def[:name] == target_def[:name] &&
|
44
|
+
existing_def[:name] == target_def[:name] &&
|
45
|
+
existing_def[:wday] == target_def[:wday] &&
|
46
|
+
existing_def[:mday] == target_def[:mday] &&
|
47
|
+
existing_def[:week] == target_def[:week] &&
|
48
|
+
existing_def[:function] == target_def[:function] &&
|
49
|
+
existing_def[:function_modifier] == target_def[:function_modifier] &&
|
50
|
+
existing_def[:type] == target_def[:type] &&
|
51
|
+
existing_def[:observed] == target_def[:observed] &&
|
52
|
+
existing_def[:year_ranges] == target_def[:year_ranges]
|
45
53
|
end
|
46
54
|
end
|
47
55
|
end
|
@@ -24,39 +24,11 @@ module Holidays
|
|
24
24
|
next unless @rules[:year_range].call(year, h[:year_ranges])
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
if h[:function]
|
31
|
-
result = @custom_method_processor.call(
|
32
|
-
build_custom_method_input(year, current_month, current_day, h[:regions]),
|
33
|
-
h[:function], h[:function_arguments], h[:function_modifier],
|
34
|
-
)
|
35
|
-
|
36
|
-
#FIXME The result should always be present, see https://github.com/holidays/holidays/issues/204 for more information
|
37
|
-
if result
|
38
|
-
current_month = result.month
|
39
|
-
current_day = result.mday
|
40
|
-
else
|
41
|
-
current_month = nil
|
42
|
-
current_day = nil
|
43
|
-
end
|
44
|
-
else
|
45
|
-
current_day = h[:mday] || @day_of_month_calculator.call(year, current_month, h[:week], h[:wday])
|
46
|
-
end
|
47
|
-
|
48
|
-
# Silently skip bad mdays
|
49
|
-
#TODO Should we be doing something different here? We have no concept of logging right now. Maybe we should add it?
|
50
|
-
begin
|
51
|
-
date = Date.civil(year, current_month, current_day)
|
52
|
-
rescue; next; end
|
27
|
+
date = build_date(year, month, h)
|
28
|
+
next unless date
|
53
29
|
|
54
30
|
if observed_set?(options) && h[:observed]
|
55
|
-
date =
|
56
|
-
build_custom_method_input(date.year, date.month, date.day, regions),
|
57
|
-
h[:observed],
|
58
|
-
[:date],
|
59
|
-
)
|
31
|
+
date = build_observed_date(date, regions, h)
|
60
32
|
end
|
61
33
|
|
62
34
|
holidays << {:date => date, :name => h[:name], :regions => h[:regions]}
|
@@ -93,6 +65,29 @@ module Holidays
|
|
93
65
|
options && options.include?(:observed) == true
|
94
66
|
end
|
95
67
|
|
68
|
+
def build_date(year, month, h)
|
69
|
+
if h[:function]
|
70
|
+
holiday = custom_holiday(year, month, h)
|
71
|
+
#FIXME The result should always be present, see https://github.com/holidays/holidays/issues/204 for more information
|
72
|
+
current_month = holiday&.month
|
73
|
+
current_day = holiday&.mday
|
74
|
+
else
|
75
|
+
current_month = month
|
76
|
+
current_day = h[:mday] || @day_of_month_calculator.call(year, month, h[:week], h[:wday])
|
77
|
+
end
|
78
|
+
|
79
|
+
# Silently skip bad mdays
|
80
|
+
#TODO Should we be doing something different here? We have no concept of logging right now. Maybe we should add it?
|
81
|
+
Date.civil(year, current_month, current_day) rescue nil
|
82
|
+
end
|
83
|
+
|
84
|
+
def custom_holiday(year, month, h)
|
85
|
+
@custom_method_processor.call(
|
86
|
+
build_custom_method_input(year, month, h[:mday], h[:regions]),
|
87
|
+
h[:function], h[:function_arguments], h[:function_modifier],
|
88
|
+
)
|
89
|
+
end
|
90
|
+
|
96
91
|
def build_custom_method_input(year, month, day, regions)
|
97
92
|
{
|
98
93
|
year: year,
|
@@ -101,6 +96,14 @@ module Holidays
|
|
101
96
|
region: regions.first, #FIXME This isn't ideal but will work for our current use case...
|
102
97
|
}
|
103
98
|
end
|
99
|
+
|
100
|
+
def build_observed_date(date, regions, h)
|
101
|
+
@custom_method_processor.call(
|
102
|
+
build_custom_method_input(date.year, date.month, date.day, regions),
|
103
|
+
h[:observed],
|
104
|
+
[:date],
|
105
|
+
)
|
106
|
+
end
|
104
107
|
end
|
105
108
|
end
|
106
109
|
end
|
@@ -1,49 +1,30 @@
|
|
1
|
-
# Please note that only one condition needs to match in order for `call` to return `true.
|
2
|
-
# See the test file for this class for specific examples.
|
3
1
|
module Holidays
|
4
2
|
module Finder
|
5
3
|
module Rules
|
6
4
|
class YearRange
|
7
5
|
class << self
|
8
|
-
|
9
|
-
|
6
|
+
UNTIL = :until
|
7
|
+
FROM = :from
|
10
8
|
LIMITED = :limited
|
11
9
|
BETWEEN = :between
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
case operator
|
32
|
-
when BEFORE, BEFORE.to_s
|
33
|
-
matched = target_year <= year_range
|
34
|
-
when AFTER, AFTER.to_s
|
35
|
-
matched = target_year >= year_range
|
36
|
-
when LIMITED, LIMITED.to_s
|
37
|
-
if year_range.is_a?(Array)
|
38
|
-
matched = year_range.include?(target_year)
|
39
|
-
else
|
40
|
-
matched = year_range == target_year
|
41
|
-
end
|
42
|
-
when BETWEEN, BETWEEN.to_s
|
43
|
-
matched = year_range.cover?(target_year)
|
44
|
-
end
|
45
|
-
|
46
|
-
break if matched == true
|
11
|
+
def call(target_year, year_range_defs)
|
12
|
+
validate!(target_year, year_range_defs)
|
13
|
+
|
14
|
+
operator = year_range_defs.keys.first
|
15
|
+
rule_value = year_range_defs[operator]
|
16
|
+
|
17
|
+
case operator
|
18
|
+
when UNTIL
|
19
|
+
matched = target_year <= rule_value
|
20
|
+
when FROM
|
21
|
+
matched = target_year >= rule_value
|
22
|
+
when LIMITED
|
23
|
+
matched = rule_value.include?(target_year)
|
24
|
+
when BETWEEN
|
25
|
+
matched = rule_value.cover?(target_year)
|
26
|
+
else
|
27
|
+
matched = false
|
47
28
|
end
|
48
29
|
|
49
30
|
matched
|
@@ -54,25 +35,20 @@ module Holidays
|
|
54
35
|
def validate!(target_year, year_ranges)
|
55
36
|
raise ArgumentError.new("target_year must be a number") unless target_year.is_a?(Integer)
|
56
37
|
raise ArgumentError.new("year_ranges cannot be missing") if year_ranges.nil? || year_ranges.empty?
|
38
|
+
raise ArgumentError.new("year_ranges must contain a hash with a single operator") unless year_ranges.is_a?(Hash) && year_ranges.size == 1
|
57
39
|
|
58
|
-
year_ranges.
|
59
|
-
|
60
|
-
raise ArgumentError.new("year_ranges cannot include empty hashes") if range.empty?
|
61
|
-
raise ArgumentError.new("year_ranges entries can only include one operator") unless range.count == 1
|
62
|
-
|
63
|
-
operator = range.keys.first
|
64
|
-
range = range.values.first
|
40
|
+
operator = year_ranges.keys.first
|
41
|
+
value = year_ranges[operator]
|
65
42
|
|
66
|
-
|
43
|
+
raise ArgumentError.new("Invalid operator found: '#{operator}'") unless [UNTIL, FROM, LIMITED, BETWEEN].include?(operator)
|
67
44
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
45
|
+
case operator
|
46
|
+
when UNTIL, FROM
|
47
|
+
raise ArgumentError.new("#{UNTIL} and #{FROM} operator value must be a number, received: '#{value}'") unless value.is_a?(Integer)
|
48
|
+
when LIMITED
|
49
|
+
raise ArgumentError.new(":limited operator value must be an array containing at least one integer value, received: '#{value}'") unless value.is_a?(Array) && value.size >= 1 && value.all? { |v| v.is_a?(Integer) }
|
50
|
+
when BETWEEN
|
51
|
+
raise ArgumentError.new(":between operator value must be a range, received: '#{value}'") unless value.is_a?(Range)
|
76
52
|
end
|
77
53
|
end
|
78
54
|
end
|
data/lib/holidays/version.rb
CHANGED
data/test/coverage_report.rb
CHANGED
@@ -1,8 +1,26 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
|
3
|
-
|
3
|
+
# For reasons I don't understand jruby implementations report lower coverage
|
4
|
+
# than other ruby versions. Ruby 2.5.3, for instance, is at 92%.
|
5
|
+
#
|
6
|
+
# We set the floor based on jruby so that all automated tests pass on Travis CI.
|
7
|
+
SimpleCov.minimum_coverage 89
|
8
|
+
|
9
|
+
SimpleCov.add_filter [
|
10
|
+
# Apparently simplecov doesn't automatically filter 'spec' or 'test' so we
|
11
|
+
# have to do it manually.
|
12
|
+
'test',
|
13
|
+
|
14
|
+
# Only filtered because I tend to not see value in testing factories.
|
15
|
+
'lib/holidays/factory/',
|
16
|
+
|
17
|
+
# jruby coverage flips out here and doesn't count much of the large date
|
18
|
+
# arrays used by this class. This results in an extremely low reported
|
19
|
+
# coverage for this specific file but only in jruby, not other ruby versions.
|
20
|
+
# Since it obliterates coverage percentages I'll filter it until I can come
|
21
|
+
# up with a solution.
|
22
|
+
'lib/holidays/date_calculator/lunar_date.rb',
|
23
|
+
]
|
24
|
+
|
4
25
|
SimpleCov.coverage_dir 'reports/coverage'
|
5
|
-
SimpleCov.start
|
6
|
-
add_filter 'lib/generated_definitions/'
|
7
|
-
add_filter 'lib/holidays/factory/'
|
8
|
-
end
|
26
|
+
SimpleCov.start
|
@@ -4,28 +4,24 @@ months:
|
|
4
4
|
regions: [custom_year_range_file]
|
5
5
|
mday: 1
|
6
6
|
year_ranges:
|
7
|
-
|
7
|
+
from: 2016
|
8
8
|
- name: before_year
|
9
9
|
regions: [custom_year_range_file]
|
10
10
|
mday: 2
|
11
11
|
year_ranges:
|
12
|
-
|
12
|
+
until: 2017
|
13
13
|
- name: between_year
|
14
14
|
regions: [custom_year_range_file]
|
15
15
|
mday: 3
|
16
16
|
year_ranges:
|
17
|
-
|
17
|
+
between:
|
18
|
+
start: 2016
|
19
|
+
end: 2018
|
18
20
|
- name: limited_year
|
19
21
|
regions: [custom_year_range_file]
|
20
22
|
mday: 4
|
21
23
|
year_ranges:
|
22
|
-
|
23
|
-
- name: multiple_conditions
|
24
|
-
regions: [custom_year_range_file]
|
25
|
-
mday: 5
|
26
|
-
year_ranges:
|
27
|
-
- before: 2015
|
28
|
-
- after: 2017
|
24
|
+
limited: [2016,2018,2019]
|
29
25
|
|
30
26
|
tests:
|
31
27
|
- given:
|
@@ -0,0 +1,38 @@
|
|
1
|
+
months:
|
2
|
+
0:
|
3
|
+
- name: With Function Modifier
|
4
|
+
regions: [multiple_with_conflict_1]
|
5
|
+
function: easter(year)
|
6
|
+
function_modifier: 60
|
7
|
+
- name: With Function Only Different Function Name
|
8
|
+
regions: [multiple_with_conflict_1]
|
9
|
+
function: conflict_custom_method_1(year)
|
10
|
+
- name: With Function Only Same Function Name
|
11
|
+
regions: [multiple_with_conflict_1]
|
12
|
+
function: conflict_custom_method_identical_name_between_regions(year)
|
13
|
+
- name: With Function Only Same Function Name - Region 1
|
14
|
+
regions: [multiple_with_conflict_1]
|
15
|
+
function: conflict_custom_method_identical_name_between_regions_but_different_holiday_names(year)
|
16
|
+
1:
|
17
|
+
- name: New Year's Day
|
18
|
+
regions: [multiple_with_conflict_1]
|
19
|
+
mday: 1
|
20
|
+
observed: to_monday_if_weekend(date)
|
21
|
+
10:
|
22
|
+
- name: Testing Conflict Month 10
|
23
|
+
regions: [multiple_with_conflict_1]
|
24
|
+
mday: 5
|
25
|
+
|
26
|
+
methods:
|
27
|
+
conflict_custom_method_1:
|
28
|
+
arguments: year
|
29
|
+
ruby: |
|
30
|
+
Date.civil(year, 8, 1)
|
31
|
+
conflict_custom_method_identical_name_between_regions:
|
32
|
+
arguments: year
|
33
|
+
ruby: |
|
34
|
+
Date.civil(year, 9, 1)
|
35
|
+
conflict_custom_method_identical_name_between_regions_but_different_holiday_names:
|
36
|
+
arguments: year
|
37
|
+
ruby: |
|
38
|
+
Date.civil(year, 9, 15)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
months:
|
2
|
+
0:
|
3
|
+
- name: With Function Modifier
|
4
|
+
regions: [multiple_with_conflict_2]
|
5
|
+
function: easter(year)
|
6
|
+
function_modifier: 64
|
7
|
+
- name: With Function Only Different Function Name
|
8
|
+
regions: [multiple_with_conflict_2]
|
9
|
+
function: conflict_custom_method_2(year)
|
10
|
+
- name: With Function Only Same Function Name
|
11
|
+
regions: [multiple_with_conflict_2]
|
12
|
+
function: conflict_custom_method_identical_name_between_regions(year)
|
13
|
+
- name: With Function Only Same Function Name - Region 2
|
14
|
+
regions: [multiple_with_conflict_2]
|
15
|
+
function: conflict_custom_method_identical_name_between_regions_but_different_holiday_names(year)
|
16
|
+
1:
|
17
|
+
- name: New Year's Day
|
18
|
+
regions: [multiple_with_conflict_2]
|
19
|
+
mday: 1
|
20
|
+
observed: to_tuesday_if_sunday_or_monday_if_saturday(date)
|
21
|
+
10:
|
22
|
+
- name: Testing Conflict Month 10
|
23
|
+
regions: [multiple_with_conflict_2]
|
24
|
+
mday: 7
|
25
|
+
|
26
|
+
methods:
|
27
|
+
conflict_custom_method_2:
|
28
|
+
arguments: year
|
29
|
+
ruby: |
|
30
|
+
Date.civil(year, 12, 1)
|
31
|
+
conflict_custom_method_identical_name_between_regions:
|
32
|
+
arguments: year
|
33
|
+
ruby: |
|
34
|
+
Date.civil(year, 11, 1)
|
35
|
+
conflict_custom_method_identical_name_between_regions_but_different_holiday_names:
|
36
|
+
arguments: year
|
37
|
+
ruby: |
|
38
|
+
Date.civil(year, 11, 15)
|
data/test/defs/test_defs_ca.rb
CHANGED
@@ -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,
|
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]
|
data/test/defs/test_defs_co.rb
CHANGED
@@ -45,11 +45,11 @@ class CoDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
45
45
|
|
46
46
|
assert_equal "Día de la Ascensión", (Holidays.on(Date.civil(2017, 5, 29), [:co])[0] || {})[:name]
|
47
47
|
|
48
|
-
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6,
|
48
|
+
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2014, 6, 23), [:co])[0] || {})[:name]
|
49
49
|
|
50
|
-
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5,
|
50
|
+
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2016, 5, 30), [:co])[0] || {})[:name]
|
51
51
|
|
52
|
-
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6,
|
52
|
+
assert_equal "Corpus Christi", (Holidays.on(Date.civil(2017, 6, 19), [:co])[0] || {})[:name]
|
53
53
|
|
54
54
|
assert_equal "Sagrado Corazón", (Holidays.on(Date.civil(2014, 6, 30), [:co])[0] || {})[:name]
|
55
55
|
|
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__)) + '/../test_helper'
|
|
3
3
|
|
4
4
|
# This file is generated by the Ruby Holiday gem.
|
5
5
|
#
|
6
|
-
# Definitions loaded: definitions/at.yaml, definitions/be_fr.yaml, definitions/be_nl.yaml, definitions/ch.yaml, definitions/cz.yaml, definitions/dk.yaml, definitions/de.yaml, definitions/el.yaml, definitions/es.yaml, definitions/fr.yaml, definitions/gb.yaml, definitions/hr.yaml, definitions/hu.yaml, definitions/ie.yaml, definitions/is.yaml, definitions/it.yaml, definitions/li.yaml, definitions/lt.yaml, definitions/nl.yaml, definitions/no.yaml, definitions/pl.yaml, definitions/pt.yaml, definitions/ro.yaml, definitions/sk.yaml, definitions/si.yaml, definitions/bg.yaml, definitions/ua.yaml
|
6
|
+
# Definitions loaded: definitions/at.yaml, definitions/be_fr.yaml, definitions/be_nl.yaml, definitions/ch.yaml, definitions/cz.yaml, definitions/dk.yaml, definitions/de.yaml, definitions/el.yaml, definitions/es.yaml, definitions/fr.yaml, definitions/gb.yaml, definitions/hr.yaml, definitions/hu.yaml, definitions/ie.yaml, definitions/is.yaml, definitions/it.yaml, definitions/li.yaml, definitions/lt.yaml, definitions/lv.yaml, definitions/nl.yaml, definitions/no.yaml, definitions/pl.yaml, definitions/pt.yaml, definitions/ro.yaml, definitions/sk.yaml, definitions/si.yaml, definitions/bg.yaml, definitions/ua.yaml
|
7
7
|
class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
8
8
|
|
9
9
|
def test_europe
|
@@ -593,15 +593,15 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
593
593
|
|
594
594
|
assert_equal "1848/49-es forradalom és szabadságharc ünnepe", (Holidays.on(Date.civil(2012, 3, 15), [:hu], [:informal])[0] || {})[:name]
|
595
595
|
|
596
|
-
assert_equal "
|
596
|
+
assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2011, 4, 25), [:hu], [:informal])[0] || {})[:name]
|
597
597
|
|
598
|
-
assert_equal "
|
598
|
+
assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2012, 4, 9), [:hu], [:informal])[0] || {})[:name]
|
599
599
|
|
600
600
|
assert_equal "A munka ünnepe", (Holidays.on(Date.civil(2012, 5, 1), [:hu], [:informal])[0] || {})[:name]
|
601
601
|
|
602
|
-
assert_equal "
|
602
|
+
assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2011, 6, 13), [:hu], [:informal])[0] || {})[:name]
|
603
603
|
|
604
|
-
assert_equal "
|
604
|
+
assert_equal "Pünkösdhétfő", (Holidays.on(Date.civil(2012, 5, 28), [:hu], [:informal])[0] || {})[:name]
|
605
605
|
|
606
606
|
assert_equal "Az államalapítás ünnepe", (Holidays.on(Date.civil(2012, 8, 20), [:hu], [:informal])[0] || {})[:name]
|
607
607
|
|
@@ -615,6 +615,14 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
615
615
|
|
616
616
|
assert_nil (Holidays.on(Date.civil(2012, 3, 14), [:hu])[0] || {})[:name]
|
617
617
|
|
618
|
+
assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2016, 3, 28), [:hu])[0] || {})[:name]
|
619
|
+
|
620
|
+
assert_nil (Holidays.on(Date.civil(2016, 3, 25), [:hu])[0] || {})[:name]
|
621
|
+
|
622
|
+
assert_equal "Húsvéthétfő", (Holidays.on(Date.civil(2017, 4, 17), [:hu])[0] || {})[:name]
|
623
|
+
|
624
|
+
assert_equal "Nagypéntek", (Holidays.on(Date.civil(2017, 4, 14), [:hu])[0] || {})[:name]
|
625
|
+
|
618
626
|
assert_equal "New Year's Day", (Holidays.on(Date.civil(2008, 1, 1), [:ie])[0] || {})[:name]
|
619
627
|
|
620
628
|
assert_equal "St. Patrick's Day", (Holidays.on(Date.civil(2008, 3, 17), [:ie])[0] || {})[:name]
|
@@ -707,14 +715,34 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
707
715
|
|
708
716
|
assert_equal "Festa della Liberazione", (Holidays.on(Date.civil(2007, 4, 25), [:it], [:informal])[0] || {})[:name]
|
709
717
|
|
718
|
+
assert_equal "Festa di San Liberale", (Holidays.on(Date.civil(2019, 4, 27), [:it_tv], [:informal])[0] || {})[:name]
|
719
|
+
|
710
720
|
assert_equal "Festa dei Lavoratori", (Holidays.on(Date.civil(2007, 5, 1), [:it], [:informal])[0] || {})[:name]
|
711
721
|
|
722
|
+
assert_equal "Festa di San Zeno", (Holidays.on(Date.civil(2019, 5, 21), [:it_vr], [:informal])[0] || {})[:name]
|
723
|
+
|
712
724
|
assert_equal "Festa della Repubblica", (Holidays.on(Date.civil(2007, 6, 2), [:it], [:informal])[0] || {})[:name]
|
713
725
|
|
726
|
+
assert_equal "Festa di Sant'Antonio di Padova", (Holidays.on(Date.civil(2019, 6, 13), [:it_pd], [:informal])[0] || {})[:name]
|
727
|
+
|
728
|
+
assert_equal "Festa di San Giovanni Battista", (Holidays.on(Date.civil(2019, 6, 24), [:it_fi, :it_ge, :it_to], [:informal])[0] || {})[:name]
|
729
|
+
|
730
|
+
assert_nil (Holidays.on(Date.civil(2019, 6, 24), [:it])[0] || {})[:name]
|
731
|
+
|
732
|
+
assert_equal "Festa di San Pietro e Paolo", (Holidays.on(Date.civil(2019, 6, 29), [:it_rm], [:informal])[0] || {})[:name]
|
733
|
+
|
734
|
+
assert_nil (Holidays.on(Date.civil(2019, 6, 29), [:it])[0] || {})[:name]
|
735
|
+
|
714
736
|
assert_equal "Assunzione", (Holidays.on(Date.civil(2007, 8, 15), [:it], [:informal])[0] || {})[:name]
|
715
737
|
|
738
|
+
assert_equal "Festa della Madonna di Monte Berico", (Holidays.on(Date.civil(2019, 9, 8), [:it_vi], [:informal])[0] || {})[:name]
|
739
|
+
|
716
740
|
assert_equal "Ognissanti", (Holidays.on(Date.civil(2007, 11, 1), [:it], [:informal])[0] || {})[:name]
|
717
741
|
|
742
|
+
assert_equal "Festa di San Martino", (Holidays.on(Date.civil(2019, 11, 11), [:it_bl], [:informal])[0] || {})[:name]
|
743
|
+
|
744
|
+
assert_equal "Festa di San Bellino", (Holidays.on(Date.civil(2019, 11, 26), [:it_ro], [:informal])[0] || {})[:name]
|
745
|
+
|
718
746
|
assert_equal "Immacolata Concezione", (Holidays.on(Date.civil(2007, 12, 8), [:it], [:informal])[0] || {})[:name]
|
719
747
|
|
720
748
|
assert_equal "Natale", (Holidays.on(Date.civil(2007, 12, 25), [:it], [:informal])[0] || {})[:name]
|
@@ -797,6 +825,85 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
797
825
|
|
798
826
|
assert_equal "Antroji Kalėdų diena", (Holidays.on(Date.civil(2012, 12, 26), [:lt])[0] || {})[:name]
|
799
827
|
|
828
|
+
assert_equal "Jaungada diena", (Holidays.on(Date.civil(2018, 1, 1), [:lv])[0] || {})[:name]
|
829
|
+
assert_equal "Jaungada diena", (Holidays.on(Date.civil(2019, 1, 1), [:lv])[0] || {})[:name]
|
830
|
+
assert_equal "Jaungada diena", (Holidays.on(Date.civil(2029, 1, 1), [:lv])[0] || {})[:name]
|
831
|
+
|
832
|
+
assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2018, 3, 30), [:lv])[0] || {})[:name]
|
833
|
+
assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2019, 4, 19), [:lv])[0] || {})[:name]
|
834
|
+
assert_equal "Lielā Piektdiena", (Holidays.on(Date.civil(2039, 4, 8), [:lv])[0] || {})[:name]
|
835
|
+
|
836
|
+
assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2018, 4, 1), [:lv])[0] || {})[:name]
|
837
|
+
assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2019, 4, 21), [:lv])[0] || {})[:name]
|
838
|
+
assert_equal "Pirmās Lieldienas", (Holidays.on(Date.civil(2039, 4, 10), [:lv])[0] || {})[:name]
|
839
|
+
|
840
|
+
assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2018, 4, 2), [:lv])[0] || {})[:name]
|
841
|
+
assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2019, 4, 22), [:lv])[0] || {})[:name]
|
842
|
+
assert_equal "Otrās Lieldienas", (Holidays.on(Date.civil(2039, 4, 11), [:lv])[0] || {})[:name]
|
843
|
+
|
844
|
+
assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2018, 5, 1), [:lv])[0] || {})[:name]
|
845
|
+
assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2019, 5, 1), [:lv])[0] || {})[:name]
|
846
|
+
assert_equal "Darba svētki, Latvijas Republikas Satversmes sapulces sasaukšanas diena", (Holidays.on(Date.civil(2029, 5, 1), [:lv])[0] || {})[:name]
|
847
|
+
|
848
|
+
assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2018, 5, 4), [:lv])[0] || {})[:name]
|
849
|
+
assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 4), [:lv])[0] || {})[:name]
|
850
|
+
assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv])[0] || {})[:name]
|
851
|
+
|
852
|
+
assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2019, 5, 6), [:lv], [:observed])[0] || {})[:name]
|
853
|
+
|
854
|
+
assert_equal "Latvijas Republikas Neatkarības atjaunošanas diena", (Holidays.on(Date.civil(2020, 5, 4), [:lv], [:observed])[0] || {})[:name]
|
855
|
+
|
856
|
+
assert_equal "Mātes diena", (Holidays.on(Date.civil(2019, 5, 12), [:lv])[0] || {})[:name]
|
857
|
+
assert_equal "Mātes diena", (Holidays.on(Date.civil(2020, 5, 10), [:lv])[0] || {})[:name]
|
858
|
+
assert_equal "Mātes diena", (Holidays.on(Date.civil(2029, 5, 13), [:lv])[0] || {})[:name]
|
859
|
+
|
860
|
+
assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2019, 6, 9), [:lv])[0] || {})[:name]
|
861
|
+
assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2020, 5, 31), [:lv])[0] || {})[:name]
|
862
|
+
assert_equal "Vasarsvētki", (Holidays.on(Date.civil(2029, 5, 20), [:lv])[0] || {})[:name]
|
863
|
+
|
864
|
+
assert_equal "Līgo diena", (Holidays.on(Date.civil(2019, 6, 23), [:lv])[0] || {})[:name]
|
865
|
+
assert_equal "Līgo diena", (Holidays.on(Date.civil(2020, 6, 23), [:lv])[0] || {})[:name]
|
866
|
+
assert_equal "Līgo diena", (Holidays.on(Date.civil(2029, 6, 23), [:lv])[0] || {})[:name]
|
867
|
+
|
868
|
+
assert_equal "Jāņu diena", (Holidays.on(Date.civil(2019, 6, 24), [:lv])[0] || {})[:name]
|
869
|
+
assert_equal "Jāņu diena", (Holidays.on(Date.civil(2020, 6, 24), [:lv])[0] || {})[:name]
|
870
|
+
assert_equal "Jāņu diena", (Holidays.on(Date.civil(2029, 6, 24), [:lv])[0] || {})[:name]
|
871
|
+
|
872
|
+
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]
|
873
|
+
|
874
|
+
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]
|
875
|
+
|
876
|
+
assert_nil (Holidays.on(Date.civil(2019, 7, 8), [:lv])[0] || {})[:name]
|
877
|
+
assert_nil (Holidays.on(Date.civil(2019, 7, 9), [:lv])[0] || {})[:name]
|
878
|
+
|
879
|
+
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]
|
880
|
+
|
881
|
+
assert_nil (Holidays.on(Date.civil(2019, 9, 24), [:lv])[0] || {})[:name]
|
882
|
+
|
883
|
+
assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2019, 11, 18), [:lv])[0] || {})[:name]
|
884
|
+
assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv])[0] || {})[:name]
|
885
|
+
assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 18), [:lv])[0] || {})[:name]
|
886
|
+
|
887
|
+
assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2020, 11, 18), [:lv], [:observed])[0] || {})[:name]
|
888
|
+
|
889
|
+
assert_equal "Latvijas Republikas Proklamēšanas diena", (Holidays.on(Date.civil(2029, 11, 19), [:lv], [:observed])[0] || {})[:name]
|
890
|
+
|
891
|
+
assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2019, 12, 24), [:lv])[0] || {})[:name]
|
892
|
+
assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2020, 12, 24), [:lv])[0] || {})[:name]
|
893
|
+
assert_equal "Ziemassvētku vakars", (Holidays.on(Date.civil(2029, 12, 24), [:lv])[0] || {})[:name]
|
894
|
+
|
895
|
+
assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 25), [:lv])[0] || {})[:name]
|
896
|
+
assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 25), [:lv])[0] || {})[:name]
|
897
|
+
assert_equal "Pirmie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 25), [:lv])[0] || {})[:name]
|
898
|
+
|
899
|
+
assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2019, 12, 26), [:lv])[0] || {})[:name]
|
900
|
+
assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2020, 12, 26), [:lv])[0] || {})[:name]
|
901
|
+
assert_equal "Otrie Ziemassvētki", (Holidays.on(Date.civil(2029, 12, 26), [:lv])[0] || {})[:name]
|
902
|
+
|
903
|
+
assert_equal "Vecgada diena", (Holidays.on(Date.civil(2019, 12, 31), [:lv])[0] || {})[:name]
|
904
|
+
assert_equal "Vecgada diena", (Holidays.on(Date.civil(2020, 12, 31), [:lv])[0] || {})[:name]
|
905
|
+
assert_equal "Vecgada diena", (Holidays.on(Date.civil(2029, 12, 31), [:lv])[0] || {})[:name]
|
906
|
+
|
800
907
|
assert_equal "Nieuwjaarsdag", (Holidays.on(Date.civil(2008, 1, 1), [:nl], [:informal])[0] || {})[:name]
|
801
908
|
|
802
909
|
assert_equal "Goede Vrijdag", (Holidays.on(Date.civil(2008, 3, 21), [:nl], [:informal])[0] || {})[:name]
|
@@ -1103,6 +1210,12 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
1103
1210
|
|
1104
1211
|
assert_equal "Natal", (Holidays.on(Date.civil(2008, 12, 25), [:pt], [:informal])[0] || {})[:name]
|
1105
1212
|
|
1213
|
+
assert_nil (Holidays.on(Date.civil(2017, 4, 14), [:ro])[0] || {})[:name]
|
1214
|
+
|
1215
|
+
assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2018, 4, 6), [:ro], [:informal])[0] || {})[:name]
|
1216
|
+
|
1217
|
+
assert_equal "Paștele - Vinerea Mare", (Holidays.on(Date.civil(2019, 4, 26), [:ro], [:informal])[0] || {})[:name]
|
1218
|
+
|
1106
1219
|
assert_equal "Paștele - duminică", (Holidays.on(Date.civil(1961, 4, 9), [:ro], [:informal])[0] || {})[:name]
|
1107
1220
|
|
1108
1221
|
assert_equal "Paștele - luni", (Holidays.on(Date.civil(1961, 4, 10), [:ro], [:informal])[0] || {})[:name]
|
@@ -1129,8 +1242,16 @@ class EuropeDefinitionTests < Test::Unit::TestCase # :nodoc:
|
|
1129
1242
|
|
1130
1243
|
assert_equal "Anul nou", (Holidays.on(Date.civil(2014, 1, 2), [:ro], [:informal])[0] || {})[:name]
|
1131
1244
|
|
1245
|
+
assert_equal "Unirea Principatelor Române", (Holidays.on(Date.civil(2017, 1, 24), [:ro], [:informal])[0] || {})[:name]
|
1246
|
+
|
1247
|
+
assert_nil (Holidays.on(Date.civil(2016, 1, 24), [:ro])[0] || {})[:name]
|
1248
|
+
|
1132
1249
|
assert_equal "Ziua muncii", (Holidays.on(Date.civil(2009, 5, 1), [:ro], [:informal])[0] || {})[:name]
|
1133
1250
|
|
1251
|
+
assert_equal "Ziua Copilului", (Holidays.on(Date.civil(2017, 6, 1), [:ro], [:informal])[0] || {})[:name]
|
1252
|
+
|
1253
|
+
assert_nil (Holidays.on(Date.civil(2016, 6, 1), [:ro])[0] || {})[:name]
|
1254
|
+
|
1134
1255
|
assert_equal "Adormirea Maicii Domnului", (Holidays.on(Date.civil(2012, 8, 15), [:ro], [:informal])[0] || {})[:name]
|
1135
1256
|
|
1136
1257
|
assert_equal "Sfântul Apostol Andrei", (Holidays.on(Date.civil(2013, 11, 30), [:ro], [:informal])[0] || {})[:name]
|