holidays 9.2.0 → 10.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 +9 -0
- data/README.md +38 -2
- data/lib/generated_definitions/au.rb +16 -42
- data/lib/generated_definitions/europe.rb +2 -10
- data/lib/generated_definitions/lu.rb +1 -1
- data/lib/generated_definitions/nz.rb +9 -1
- data/lib/generated_definitions/pl.rb +3 -11
- data/lib/holidays/definition/context/function_processor.rb +4 -5
- data/lib/holidays/definition/context/generator.rb +3 -1
- data/lib/holidays/version.rb +1 -1
- metadata +3 -313
- data/.github/workflows/changelog-check.yml +0 -47
- data/.github/workflows/release.yml +0 -46
- data/.github/workflows/ruby.yml +0 -26
- data/.gitmodules +0 -3
- data/CODE_OF_CONDUCT.md +0 -74
- data/Gemfile +0 -8
- data/Makefile +0 -60
- data/Rakefile +0 -137
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/doc/CONTRIBUTING.md +0 -72
- data/doc/MAINTAINERS.md +0 -79
- data/doc/REFERENCES +0 -19
- data/holidays.gemspec +0 -31
- data/test/coverage_report.rb +0 -24
- data/test/data/test_custom_year_range_holiday_defs.yaml +0 -31
- data/test/data/test_date_transform_conflict_region_1.yaml +0 -14
- data/test/data/test_date_transform_conflict_region_2.yaml +0 -14
- data/test/data/test_invalid_region.rb +0 -15
- data/test/data/test_region.rb +0 -15
- data/test/data/test_single_custom_holiday_defs.yaml +0 -12
- data/test/data/test_single_custom_holiday_with_custom_procs.yaml +0 -28
- data/test/defs/test_defs_ar.rb +0 -69
- data/test/defs/test_defs_at.rb +0 -31
- data/test/defs/test_defs_au.rb +0 -233
- data/test/defs/test_defs_be_fr.rb +0 -45
- data/test/defs/test_defs_be_nl.rb +0 -45
- data/test/defs/test_defs_bg.rb +0 -41
- data/test/defs/test_defs_br.rb +0 -49
- data/test/defs/test_defs_ca.rb +0 -289
- data/test/defs/test_defs_ch.rb +0 -51
- data/test/defs/test_defs_cl.rb +0 -69
- data/test/defs/test_defs_co.rb +0 -113
- data/test/defs/test_defs_cr.rb +0 -29
- data/test/defs/test_defs_cy.rb +0 -41
- data/test/defs/test_defs_cz.rb +0 -37
- data/test/defs/test_defs_de.rb +0 -91
- data/test/defs/test_defs_dk.rb +0 -47
- data/test/defs/test_defs_ecbtarget.rb +0 -27
- data/test/defs/test_defs_ee.rb +0 -41
- data/test/defs/test_defs_es.rb +0 -137
- data/test/defs/test_defs_europe.rb +0 -1530
- data/test/defs/test_defs_fed_ex.rb +0 -24
- data/test/defs/test_defs_federalreserve.rb +0 -119
- data/test/defs/test_defs_federalreservebanks.rb +0 -251
- data/test/defs/test_defs_fedex.rb +0 -31
- data/test/defs/test_defs_fi.rb +0 -59
- data/test/defs/test_defs_fr.rb +0 -43
- data/test/defs/test_defs_gb.rb +0 -163
- data/test/defs/test_defs_ge.rb +0 -53
- data/test/defs/test_defs_gr.rb +0 -41
- data/test/defs/test_defs_hk.rb +0 -93
- data/test/defs/test_defs_hr.rb +0 -45
- data/test/defs/test_defs_hu.rb +0 -47
- data/test/defs/test_defs_ie.rb +0 -53
- data/test/defs/test_defs_il.rb +0 -35
- data/test/defs/test_defs_in.rb +0 -94
- data/test/defs/test_defs_is.rb +0 -51
- data/test/defs/test_defs_it.rb +0 -57
- data/test/defs/test_defs_jp.rb +0 -159
- data/test/defs/test_defs_ke.rb +0 -31
- data/test/defs/test_defs_kr.rb +0 -37
- data/test/defs/test_defs_kz.rb +0 -39
- data/test/defs/test_defs_li.rb +0 -35
- data/test/defs/test_defs_lt.rb +0 -65
- data/test/defs/test_defs_lu.rb +0 -35
- data/test/defs/test_defs_lv.rb +0 -98
- data/test/defs/test_defs_ma.rb +0 -29
- data/test/defs/test_defs_mc.rb +0 -43
- data/test/defs/test_defs_mt_en.rb +0 -41
- data/test/defs/test_defs_mt_mt.rb +0 -41
- data/test/defs/test_defs_mx.rb +0 -49
- data/test/defs/test_defs_my.rb +0 -23
- data/test/defs/test_defs_nerc.rb +0 -29
- data/test/defs/test_defs_ng.rb +0 -29
- data/test/defs/test_defs_nl.rb +0 -33
- data/test/defs/test_defs_no.rb +0 -43
- data/test/defs/test_defs_northamerica.rb +0 -679
- data/test/defs/test_defs_nyse.rb +0 -46
- data/test/defs/test_defs_nz.rb +0 -67
- data/test/defs/test_defs_pe.rb +0 -47
- data/test/defs/test_defs_ph.rb +0 -29
- data/test/defs/test_defs_pl.rb +0 -229
- data/test/defs/test_defs_pt.rb +0 -47
- data/test/defs/test_defs_ro.rb +0 -69
- data/test/defs/test_defs_rs_cyrl.rb +0 -46
- data/test/defs/test_defs_rs_la.rb +0 -46
- data/test/defs/test_defs_ru.rb +0 -34
- data/test/defs/test_defs_scandinavia.rb +0 -215
- data/test/defs/test_defs_se.rb +0 -59
- data/test/defs/test_defs_sg.rb +0 -25
- data/test/defs/test_defs_si.rb +0 -105
- data/test/defs/test_defs_sk.rb +0 -37
- data/test/defs/test_defs_southamerica.rb +0 -327
- data/test/defs/test_defs_th.rb +0 -33
- data/test/defs/test_defs_tn.rb +0 -27
- data/test/defs/test_defs_tr.rb +0 -60
- data/test/defs/test_defs_tsx.rb +0 -70
- data/test/defs/test_defs_ua.rb +0 -41
- data/test/defs/test_defs_unitednations.rb +0 -11
- data/test/defs/test_defs_ups.rb +0 -31
- data/test/defs/test_defs_us.rb +0 -399
- data/test/defs/test_defs_ve.rb +0 -35
- data/test/defs/test_defs_vi.rb +0 -22
- data/test/defs/test_defs_za.rb +0 -35
- data/test/e2e/README.md +0 -52
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_1.yaml +0 -38
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_2.yaml +0 -38
- data/test/e2e/data/test_multiple_regions_with_conflicts_region_3.yaml +0 -38
- data/test/e2e/test_all_regions.rb +0 -49
- data/test/e2e/test_any_holidays_during_work_week.rb +0 -90
- data/test/e2e/test_holidays.rb +0 -244
- data/test/e2e/test_holidays_between.rb +0 -87
- data/test/e2e/test_multiple_regions.rb +0 -71
- data/test/e2e/test_multiple_regions_with_conflict.rb +0 -228
- data/test/e2e/test_nonstandard_regions.rb +0 -25
- data/test/holidays/core_extensions/test_date.rb +0 -122
- data/test/holidays/core_extensions/test_date_time.rb +0 -60
- data/test/holidays/date_calculator/test_day_of_month.rb +0 -27
- data/test/holidays/date_calculator/test_easter_gregorian.rb +0 -30
- data/test/holidays/date_calculator/test_easter_julian.rb +0 -36
- data/test/holidays/date_calculator/test_lunar_date.rb +0 -89
- data/test/holidays/date_calculator/test_weekend_modifier.rb +0 -54
- data/test/holidays/definition/context/test_function_processor.rb +0 -199
- data/test/holidays/definition/context/test_generator.rb +0 -226
- data/test/holidays/definition/context/test_load.rb +0 -37
- data/test/holidays/definition/context/test_merger.rb +0 -25
- data/test/holidays/definition/decorator/test_custom_method_proc.rb +0 -113
- data/test/holidays/definition/decorator/test_custom_method_source.rb +0 -96
- data/test/holidays/definition/decorator/test_test.rb +0 -123
- data/test/holidays/definition/generator/test_module.rb +0 -268
- data/test/holidays/definition/generator/test_regions.rb +0 -97
- data/test/holidays/definition/generator/test_test.rb +0 -113
- data/test/holidays/definition/parser/test_custom_method.rb +0 -79
- data/test/holidays/definition/parser/test_test.rb +0 -142
- data/test/holidays/definition/repository/test_cache.rb +0 -123
- data/test/holidays/definition/repository/test_custom_methods.rb +0 -43
- data/test/holidays/definition/repository/test_holidays_by_month.rb +0 -275
- data/test/holidays/definition/repository/test_proc_result_cache.rb +0 -91
- data/test/holidays/definition/repository/test_regions.rb +0 -104
- data/test/holidays/definition/validator/test_custom_method.rb +0 -94
- data/test/holidays/definition/validator/test_region.rb +0 -54
- data/test/holidays/definition/validator/test_test.rb +0 -60
- data/test/holidays/finder/context/test_between.rb +0 -172
- data/test/holidays/finder/context/test_dates_driver_builder.rb +0 -91
- data/test/holidays/finder/context/test_next_holiday.rb +0 -156
- data/test/holidays/finder/context/test_parse_options.rb +0 -141
- data/test/holidays/finder/context/test_search.rb +0 -290
- data/test/holidays/finder/context/test_year_holiday.rb +0 -202
- data/test/holidays/finder/rules/test_in_region.rb +0 -42
- data/test/holidays/finder/rules/test_year_range.rb +0 -166
- data/test/integration/README.md +0 -48
- data/test/integration/data/test_custom_govt_holiday_defs.yaml +0 -5
- data/test/integration/data/test_custom_informal_holidays_defs.yaml +0 -11
- data/test/integration/data/test_multiple_custom_holiday_defs.yaml +0 -12
- data/test/integration/test_custom_holidays.rb +0 -41
- data/test/integration/test_custom_informal_holidays.rb +0 -15
- data/test/integration/test_custom_year_range_holidays.rb +0 -35
- data/test/smoke/README.md +0 -31
- data/test/smoke/test_available_regions.rb +0 -18
- data/test/smoke/test_smoke.rb +0 -74
- data/test/test_helper.rb +0 -37
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/definition/repository/proc_result_cache'
|
|
4
|
-
|
|
5
|
-
class ProcResultCacheRepoTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@subject = Holidays::Definition::Repository::ProcResultCache.new
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_lookup_stores_and_returns_result_of_function_if_it_is_not_present
|
|
11
|
-
function = lambda { |year| Date.civil(year, 2, 1) - 1 }
|
|
12
|
-
function_argument = 2015
|
|
13
|
-
|
|
14
|
-
assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument))
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
#FIXME This test stinks. I don't know how to show that the second invocation
|
|
18
|
-
# doesn't call the function. In rspec I could just do an expect().not_to
|
|
19
|
-
# but it doesn't seem like Mocha can do that? I'm punting.
|
|
20
|
-
def test_lookup_simply_returns_result_of_cache_if_present_after_first_call
|
|
21
|
-
function = lambda { |year| Date.civil(year, 2, 1) - 1 }
|
|
22
|
-
function_argument = 2015
|
|
23
|
-
|
|
24
|
-
assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument))
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_lookup_raises_error_if_function_is_not_a_proc
|
|
28
|
-
function = "Holidays.easter(year)"
|
|
29
|
-
function_argument = 2015
|
|
30
|
-
|
|
31
|
-
assert_raise ArgumentError do
|
|
32
|
-
@subject.lookup(function, function_argument)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_lookup_accepts_date_as_function_argument
|
|
37
|
-
function = lambda { |date| date - 1 }
|
|
38
|
-
function_argument = Date.civil(2015, 2, 1)
|
|
39
|
-
|
|
40
|
-
assert_equal(Date.civil(2015, 1, 31), @subject.lookup(function, function_argument))
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_lookup_accepts_symbol_as_function_argument
|
|
44
|
-
function = lambda { |symbol| symbol }
|
|
45
|
-
function_argument = :test
|
|
46
|
-
|
|
47
|
-
assert_equal(:test, @subject.lookup(function, function_argument))
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_accepts_multiple_arguments_for_functions
|
|
51
|
-
function = lambda { |year, month, day| Date.civil(year, month, day) + 1 }
|
|
52
|
-
year = 2016
|
|
53
|
-
month = 1
|
|
54
|
-
day = 1
|
|
55
|
-
|
|
56
|
-
assert_equal(Date.civil(2016, 1, 2), @subject.lookup(function, year, month, day))
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def test_raises_error_if_one_of_multiple_arguments_is_not_an_int_or_date
|
|
60
|
-
function = lambda { |year, month, day| Date.civil(year, month, day) + 1 }
|
|
61
|
-
year = 2016
|
|
62
|
-
month = 1
|
|
63
|
-
day = "1"
|
|
64
|
-
|
|
65
|
-
assert_raise ArgumentError do
|
|
66
|
-
@subject.lookup(function, year, month, day)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_accepts_mix_of_integers_and_dates_for_multiple_function_arguments
|
|
71
|
-
function = lambda { |date, modifier| date + modifier }
|
|
72
|
-
date = Date.civil(2016, 1, 1)
|
|
73
|
-
modifier = 5
|
|
74
|
-
|
|
75
|
-
assert_equal(Date.civil(2016, 1, 6), @subject.lookup(function, date, modifier))
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_lookup_raises_error_if_function_argument_is_not_valid
|
|
79
|
-
function = lambda { |year| Date.civil(year, 2, 1) - 1 }
|
|
80
|
-
function_argument = "2015"
|
|
81
|
-
|
|
82
|
-
assert_raise ArgumentError do
|
|
83
|
-
@subject.lookup(function, function_argument)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
function_argument = Proc.new { |arg1| "arg1" + "something"}
|
|
87
|
-
assert_raise ArgumentError do
|
|
88
|
-
@subject.lookup(function, function_argument)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/definition/repository/regions'
|
|
4
|
-
|
|
5
|
-
class RegionsRepoTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@all_generated_regions = [:parent, :subregion, :subregion_with_underscores, :region1, :region2]
|
|
8
|
-
@parent_region_lookup = {
|
|
9
|
-
:subregion => :parent,
|
|
10
|
-
:subregion_with_underscores => :parent,
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
@subject = Holidays::Definition::Repository::Regions.new(@all_generated_regions, @parent_region_lookup)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_all_loaded_returns_an_empty_array_if_just_initialize
|
|
17
|
-
assert_equal([], @subject.all_loaded)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_add_successfully_adds_a_region
|
|
21
|
-
@subject.add(:test)
|
|
22
|
-
assert_equal([:test], @subject.all_loaded)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_add_raises_error_if_symbol_not_provided
|
|
26
|
-
assert_raises ArgumentError do
|
|
27
|
-
@subject.add('not-a-symbol')
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_add_raises_error_if_argument_is_nil
|
|
32
|
-
assert_raises ArgumentError do
|
|
33
|
-
@subject.add(nil)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_add_raises_error_if_any_region_is_not_a_symbol
|
|
38
|
-
assert_raises ArgumentError do
|
|
39
|
-
@subject.add([:test, 'not-a-symbol'])
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_add_does_not_add_if_the_region_already_exists
|
|
44
|
-
@subject.add(:test)
|
|
45
|
-
@subject.add(:test)
|
|
46
|
-
assert_equal([:test], @subject.all_loaded)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def test_add_accepts_array_of_regions
|
|
50
|
-
@subject.add([:test, :test2])
|
|
51
|
-
assert_equal([:test, :test2], @subject.all_loaded)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_exists_returns_true_if_region_is_present
|
|
55
|
-
@subject.add(:test)
|
|
56
|
-
assert @subject.loaded?(:test)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def tests_exists_returns_false_if_region_is_not_present
|
|
60
|
-
assert_equal(false, @subject.loaded?(:something))
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def test_exists_raises_error_if_invalid_argument
|
|
64
|
-
assert_raises ArgumentError do
|
|
65
|
-
@subject.loaded?(nil)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def test_search_returns_empty_array_if_no_matches_found
|
|
70
|
-
assert_equal([], @subject.search(:something))
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_search_returns_matches_on_prefix
|
|
74
|
-
@subject.add([:another_region, :test_region])
|
|
75
|
-
assert_equal([:test_region], @subject.search(:test_))
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def test_search_returns_multiple_matches_on_prefix
|
|
79
|
-
@subject.add([:another_region, :test_region, :test_region2])
|
|
80
|
-
assert_equal([:test_region, :test_region2], @subject.search(:test_))
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def test_search_raises_error_if_prefix_is_not_a_string
|
|
84
|
-
assert_raises ArgumentError do
|
|
85
|
-
@subject.search("string")
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
assert_raises ArgumentError do
|
|
89
|
-
@subject.search(nil)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def test_all_generated_returns_value_from_initializer
|
|
94
|
-
assert_equal(@all_generated_regions, @subject.all_generated)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def test_parent_region_lookup_returns_region_if_it_exists
|
|
98
|
-
assert_equal(@parent_region_lookup[:subregion], @subject.parent_region_lookup(:subregion))
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def test_parent_region_lookup_returns_nil_if_does_not_exist_in_lookup
|
|
102
|
-
assert_nil(@subject.parent_region_lookup(:parent))
|
|
103
|
-
end
|
|
104
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/definition/validator/custom_method'
|
|
4
|
-
|
|
5
|
-
class CustomMethodValidatorTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@subject = Holidays::Definition::Validator::CustomMethod.new
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_valid_returns_true_if_valid
|
|
11
|
-
m = {:name => "good_method", :arguments => "year", :source => "source"}
|
|
12
|
-
assert @subject.valid?(m)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_valid_returns_true_with_multiple_arguments
|
|
16
|
-
m = {:name => "good_method", :arguments => "year,month", :source => "source"}
|
|
17
|
-
assert @subject.valid?(m)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def test_valid_returns_true_with_date_argument
|
|
21
|
-
m = {:name => "good_method", :arguments => "date", :source => "source"}
|
|
22
|
-
assert @subject.valid?(m)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_valid_returns_true_with_year_argument
|
|
26
|
-
m = {:name => "good_method", :arguments => "year", :source => "source"}
|
|
27
|
-
assert @subject.valid?(m)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_valid_returns_true_with_month_argument
|
|
31
|
-
m = {:name => "good_method", :arguments => "month", :source => "source"}
|
|
32
|
-
assert @subject.valid?(m)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def test_valid_returns_true_with_day_argument
|
|
36
|
-
m = {:name => "good_method", :arguments => "day", :source => "source"}
|
|
37
|
-
assert @subject.valid?(m)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_valid_returns_true_with_region_argument
|
|
41
|
-
m = {:name => "good_method", :arguments => "region", :source => "source"}
|
|
42
|
-
assert @subject.valid?(m)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def test_valid_returns_true_multiple_arguments_with_whitespace
|
|
46
|
-
m = {:name => "good_method", :arguments => "year , month", :source => "source"}
|
|
47
|
-
assert @subject.valid?(m)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_valid_returns_false_if_single_argument_contain_carriage_return
|
|
51
|
-
m = {:name => "bad_method", :arguments =>"year\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"}
|
|
52
|
-
assert_false @subject.valid?(m)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def test_valid_returns_false_if_multiple_arguments_contain_carriage_return
|
|
56
|
-
m = {:name => "bad_method", :arguments =>"year,month\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"}
|
|
57
|
-
assert_false @subject.valid?(m)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def test_valid_returns_false_if_multiple_arguments_contain_carriage_return_with_whitespace
|
|
61
|
-
m = {:name => "bad_method", :arguments =>"year , month\n", :source =>"d = Date.civil(year, 1, 1)\nd + 2\n"}
|
|
62
|
-
assert_false @subject.valid?(m)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_valid_returns_false_if_no_source
|
|
66
|
-
m = {:name => "bad_method", :arguments => "day"}
|
|
67
|
-
assert_false @subject.valid?(m)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_valid_returns_false_if_source_is_empty
|
|
71
|
-
m = {:name => "bad_method", :arguments => "day", :source => ""}
|
|
72
|
-
assert_false @subject.valid?(m)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def test_valid_returns_false_if_name_is_missing
|
|
76
|
-
m = {:arguments => "day", :source => "source"}
|
|
77
|
-
assert_false @subject.valid?(m)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def test_valid_returns_false_if_name_is_empty
|
|
81
|
-
m = {:name => "", :arguments => "day", :source => "source"}
|
|
82
|
-
assert_false @subject.valid?(m)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def test_returns_false_if_multiple_arguments_contain_unrecognized_value
|
|
86
|
-
m = {:name => "bad_method", :arguments => "year,month,day,date,unknown", :source => "source"}
|
|
87
|
-
assert_false @subject.valid?(m)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_returns_false_if_single_argument_contains_unrecognized_value
|
|
91
|
-
m = {:name => "bad_method", :arguments => "unknown", :source => "source"}
|
|
92
|
-
assert_false @subject.valid?(m)
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/definition/validator/region'
|
|
4
|
-
|
|
5
|
-
class RegionValidatorTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@regions_repo = mock()
|
|
8
|
-
@regions_repo.stubs(:loaded?).returns(false)
|
|
9
|
-
@regions_repo.stubs(:all_generated).returns([])
|
|
10
|
-
|
|
11
|
-
@subject = Holidays::Definition::Validator::Region.new(@regions_repo)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_returns_true_if_region_loaded_in_generated_files
|
|
15
|
-
@regions_repo.expects(:all_generated).returns([:us])
|
|
16
|
-
assert(@subject.valid?(:us))
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_returns_true_if_region_is_in_regions_repository
|
|
20
|
-
@regions_repo.expects(:loaded?).with(:custom).returns(true)
|
|
21
|
-
assert(@subject.valid?(:custom))
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_returns_false_if_region_does_not_exist_in_generated_files_or_regions_repo
|
|
25
|
-
@regions_repo.expects(:loaded?).with(:unknown_region).returns(false)
|
|
26
|
-
assert_equal(false, @subject.valid?(:unknown_region))
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_returns_false_if_region_is_not_a_symbol
|
|
30
|
-
assert_equal(false, @subject.valid?('not-a-symbol'))
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_returns_true_if_region_is_any
|
|
34
|
-
assert(@subject.valid?(:any))
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_returns_true_if_wildcard_region_is_valid
|
|
38
|
-
@regions_repo.expects(:all_generated).returns([:gb])
|
|
39
|
-
assert(@subject.valid?(:gb_))
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_returns_false_if_wildcard_region_is_invalid
|
|
43
|
-
assert_equal(false, @subject.valid?(:somethingweird_))
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_returns_false_if_malicious_region_is_given
|
|
47
|
-
assert_equal(false, @subject.valid?(:"../../../test"))
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_returns_true_with_multiple_underscores
|
|
51
|
-
@regions_repo.expects(:loaded?).with(:some_test_region).returns(true)
|
|
52
|
-
assert(@subject.valid?(:some_test_region))
|
|
53
|
-
end
|
|
54
|
-
end
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Heh at this file name
|
|
2
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
3
|
-
|
|
4
|
-
require 'holidays/definition/validator/test'
|
|
5
|
-
|
|
6
|
-
class TestValidatorTests < Test::Unit::TestCase
|
|
7
|
-
def setup
|
|
8
|
-
@subject = Holidays::Definition::Validator::Test.new
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_returns_true_if_valid
|
|
12
|
-
t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'test', holiday: true, :options => ['option1']}
|
|
13
|
-
assert @subject.valid?(t)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_returns_false_if_missing_dates
|
|
17
|
-
t = {:regions => ['us'], :name => 'test'}
|
|
18
|
-
assert_equal false, @subject.valid?(t)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_returns_false_if_dates_contains_invalid_value
|
|
22
|
-
t = {:dates => ['2016-01-01', 'invalid-date'], :regions => ['us'], :name => 'test'}
|
|
23
|
-
assert_equal false, @subject.valid?(t)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_returns_false_if_missing_regions
|
|
27
|
-
t = {:dates => ['2016-01-01'], :name => 'test'}
|
|
28
|
-
assert_equal false, @subject.valid?(t)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_returns_false_if_regions_contains_non_string
|
|
32
|
-
t = {:dates => ['2016-01-01'], :regions => [3], :name => 'test'}
|
|
33
|
-
assert_equal false, @subject.valid?(t)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_returns_false_if_name_not_a_string
|
|
37
|
-
t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 3}
|
|
38
|
-
assert_equal false, @subject.valid?(t)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_returns_false_if_holiday_not_a_boolean
|
|
42
|
-
t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'Test', :holiday => 'invalid'}
|
|
43
|
-
assert_equal false, @subject.valid?(t)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_returns_true_if_options_not_array_but_is_string
|
|
47
|
-
t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'test', :options => 'option1'}
|
|
48
|
-
assert @subject.valid?(t)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_returns_false_if_options_contains_non_string
|
|
52
|
-
t = {:dates => ['2016-01-01'], :regions => ['us'], :name => 'Test', :options => [3]}
|
|
53
|
-
assert_equal false, @subject.valid?(t)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_returns_false_if_both_holiday_and_name_are_missing
|
|
57
|
-
t = {:dates => ['2016-01-01'], :regions => ['us']}
|
|
58
|
-
assert_equal false, @subject.valid?(t)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/finder/context/between'
|
|
4
|
-
|
|
5
|
-
class BetweenTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@regions = [:us]
|
|
8
|
-
@observed = false
|
|
9
|
-
@informal = false
|
|
10
|
-
|
|
11
|
-
@definition_search = mock()
|
|
12
|
-
@dates_driver_builder = mock()
|
|
13
|
-
@options_parser = mock()
|
|
14
|
-
|
|
15
|
-
@subject = Holidays::Finder::Context::Between.new(
|
|
16
|
-
@definition_search,
|
|
17
|
-
@dates_driver_builder,
|
|
18
|
-
@options_parser,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
@start_date = Date.civil(2015, 1, 1)
|
|
22
|
-
@end_date = Date.civil(2015, 1, 1)
|
|
23
|
-
@dates_driver = {2015 => [0, 1, 2], 2014 => [0, 12]}
|
|
24
|
-
@options = [@regions, @observed, @informal]
|
|
25
|
-
|
|
26
|
-
@definition_search.expects(:call).at_most_once.with(
|
|
27
|
-
@dates_driver,
|
|
28
|
-
@regions,
|
|
29
|
-
[],
|
|
30
|
-
).returns([{
|
|
31
|
-
:date => Date.civil(2015, 1, 1),
|
|
32
|
-
:name => "Test",
|
|
33
|
-
:regions => [:us],
|
|
34
|
-
}])
|
|
35
|
-
|
|
36
|
-
@dates_driver_builder.expects(:call).at_most_once.with(
|
|
37
|
-
@start_date, @end_date,
|
|
38
|
-
).returns(
|
|
39
|
-
@dates_driver,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
@options_parser.expects(:call).at_most_once.with(@options).returns(@options)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def test_returns_error_if_start_date_is_missing
|
|
46
|
-
assert_raise ArgumentError do
|
|
47
|
-
@subject.call(nil, @end_date, @options)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_returns_error_if_end_date_is_missing
|
|
52
|
-
assert_raise ArgumentError do
|
|
53
|
-
@subject.call(@start_date, nil, @options)
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_returns_single_holiday
|
|
58
|
-
assert_equal(
|
|
59
|
-
[
|
|
60
|
-
{
|
|
61
|
-
:date => Date.civil(2015, 1, 1),
|
|
62
|
-
:name => "Test",
|
|
63
|
-
:regions => [:us],
|
|
64
|
-
}
|
|
65
|
-
],
|
|
66
|
-
@subject.call(@start_date, @end_date, @options)
|
|
67
|
-
)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_returns_sorted_multiple_holidays
|
|
71
|
-
@start_date = Date.civil(2015, 1, 1)
|
|
72
|
-
@end_date = Date.civil(2016, 12, 31)
|
|
73
|
-
|
|
74
|
-
@definition_search.expects(:call).at_most_once.with(
|
|
75
|
-
@dates_driver,
|
|
76
|
-
@regions,
|
|
77
|
-
[],
|
|
78
|
-
).returns([
|
|
79
|
-
{
|
|
80
|
-
:date => Date.civil(2015, 6, 1),
|
|
81
|
-
:name => "2015-June",
|
|
82
|
-
:regions => [:us],
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
:date => Date.civil(2015, 1, 1),
|
|
86
|
-
:name => "2015-Jan",
|
|
87
|
-
:regions => [:us],
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
:date => Date.civil(2016, 6, 1),
|
|
91
|
-
:name => "2016-June",
|
|
92
|
-
:regions => [:us],
|
|
93
|
-
},
|
|
94
|
-
])
|
|
95
|
-
|
|
96
|
-
@dates_driver_builder.expects(:call).at_most_once.with(
|
|
97
|
-
@start_date, @end_date,
|
|
98
|
-
).returns(
|
|
99
|
-
@dates_driver,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
assert_equal(
|
|
103
|
-
[
|
|
104
|
-
{
|
|
105
|
-
:date => Date.civil(2015, 1, 1),
|
|
106
|
-
:name => "2015-Jan",
|
|
107
|
-
:regions => [:us],
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
:date => Date.civil(2015, 6, 1),
|
|
111
|
-
:name => "2015-June",
|
|
112
|
-
:regions => [:us],
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
:date => Date.civil(2016, 6, 1),
|
|
116
|
-
:name => "2016-June",
|
|
117
|
-
:regions => [:us],
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
@subject.call(@start_date, @end_date, @options)
|
|
121
|
-
)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def test_filters_holidays_returned_by_search_if_not_in_date_range
|
|
125
|
-
@start_date = Date.civil(2015, 1, 1)
|
|
126
|
-
@end_date = Date.civil(2015, 12, 31)
|
|
127
|
-
|
|
128
|
-
@definition_search.expects(:call).at_most_once.with(
|
|
129
|
-
@dates_driver,
|
|
130
|
-
@regions,
|
|
131
|
-
[],
|
|
132
|
-
).returns([
|
|
133
|
-
{
|
|
134
|
-
:date => Date.civil(2015, 6, 1),
|
|
135
|
-
:name => "2015-June",
|
|
136
|
-
:regions => [:us],
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
:date => Date.civil(2015, 1, 1),
|
|
140
|
-
:name => "2015-Jan",
|
|
141
|
-
:regions => [:us],
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
:date => Date.civil(2016, 6, 1),
|
|
145
|
-
:name => "2016-June",
|
|
146
|
-
:regions => [:us],
|
|
147
|
-
},
|
|
148
|
-
])
|
|
149
|
-
|
|
150
|
-
@dates_driver_builder.expects(:call).at_most_once.with(
|
|
151
|
-
@start_date, @end_date,
|
|
152
|
-
).returns(
|
|
153
|
-
@dates_driver,
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
assert_equal(
|
|
157
|
-
[
|
|
158
|
-
{
|
|
159
|
-
:date => Date.civil(2015, 1, 1),
|
|
160
|
-
:name => "2015-Jan",
|
|
161
|
-
:regions => [:us],
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
:date => Date.civil(2015, 6, 1),
|
|
165
|
-
:name => "2015-June",
|
|
166
|
-
:regions => [:us],
|
|
167
|
-
},
|
|
168
|
-
],
|
|
169
|
-
@subject.call(@start_date, @end_date, @options)
|
|
170
|
-
)
|
|
171
|
-
end
|
|
172
|
-
end
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/../../../test_helper'
|
|
2
|
-
|
|
3
|
-
require 'holidays/finder/context/dates_driver_builder'
|
|
4
|
-
|
|
5
|
-
class DatesDriverBuilderTests < Test::Unit::TestCase
|
|
6
|
-
def setup
|
|
7
|
-
@subject = Holidays::Finder::Context::DatesDriverBuilder.new
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_returns_appropriately_formatted_hash
|
|
11
|
-
start_date = Date.civil(2015, 1, 1)
|
|
12
|
-
end_date = Date.civil(2015, 1, 31)
|
|
13
|
-
|
|
14
|
-
dates_driver = @subject.call(start_date, end_date)
|
|
15
|
-
|
|
16
|
-
assert(dates_driver.is_a?(Hash))
|
|
17
|
-
|
|
18
|
-
dates_driver.each do |year, months|
|
|
19
|
-
assert(year.is_a?(Integer))
|
|
20
|
-
assert(months.is_a?(Array))
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_all_years_always_contains_variable_month
|
|
25
|
-
start_date = Date.civil(2010, 1, 1)
|
|
26
|
-
end_date = Date.civil(2020, 1, 1)
|
|
27
|
-
|
|
28
|
-
dates_driver = @subject.call(start_date, end_date)
|
|
29
|
-
|
|
30
|
-
assert(dates_driver[2010].include?(0))
|
|
31
|
-
assert(dates_driver[2011].include?(0))
|
|
32
|
-
assert(dates_driver[2012].include?(0))
|
|
33
|
-
assert(dates_driver[2013].include?(0))
|
|
34
|
-
assert(dates_driver[2014].include?(0))
|
|
35
|
-
assert(dates_driver[2015].include?(0))
|
|
36
|
-
assert(dates_driver[2016].include?(0))
|
|
37
|
-
assert(dates_driver[2017].include?(0))
|
|
38
|
-
assert(dates_driver[2018].include?(0))
|
|
39
|
-
assert(dates_driver[2019].include?(0))
|
|
40
|
-
assert(dates_driver[2020].include?(0))
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_january_includes_february
|
|
44
|
-
dates_driver = @subject.call(Date.civil(2015, 1, 1), Date.civil(2015, 1, 1))
|
|
45
|
-
|
|
46
|
-
assert(dates_driver[2015].include?(1))
|
|
47
|
-
assert(dates_driver[2015].include?(2))
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def test_january_includes_previous_year_december
|
|
51
|
-
dates_driver = @subject.call(Date.civil(2015, 1, 1), Date.civil(2015, 1, 1))
|
|
52
|
-
|
|
53
|
-
assert(dates_driver[2015].include?(1))
|
|
54
|
-
assert(dates_driver[2014].include?(12))
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_december_includes_november
|
|
58
|
-
dates_driver = @subject.call(Date.civil(2015, 12, 1), Date.civil(2015, 12, 1))
|
|
59
|
-
|
|
60
|
-
assert(dates_driver[2015].include?(12))
|
|
61
|
-
assert(dates_driver[2015].include?(11))
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def test_december_includes_next_year_january
|
|
65
|
-
dates_driver = @subject.call(Date.civil(2015, 12, 1), Date.civil(2015, 12, 1))
|
|
66
|
-
|
|
67
|
-
assert(dates_driver[2015].include?(12))
|
|
68
|
-
assert(dates_driver[2016].include?(1))
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def test_middle_months_include_border_months
|
|
72
|
-
dates_driver = @subject.call(Date.civil(2015, 5, 1), Date.civil(2015, 5, 1))
|
|
73
|
-
assert(dates_driver[2015].include?(4))
|
|
74
|
-
assert(dates_driver[2015].include?(5))
|
|
75
|
-
assert(dates_driver[2015].include?(6))
|
|
76
|
-
|
|
77
|
-
dates_driver = @subject.call(Date.civil(2015, 10, 1), Date.civil(2015, 10, 1))
|
|
78
|
-
assert(dates_driver[2015].include?(9))
|
|
79
|
-
assert(dates_driver[2015].include?(10))
|
|
80
|
-
assert(dates_driver[2015].include?(11))
|
|
81
|
-
|
|
82
|
-
dates_driver = @subject.call(Date.civil(2015, 3, 1), Date.civil(2015, 7, 1))
|
|
83
|
-
assert(dates_driver[2015].include?(2))
|
|
84
|
-
assert(dates_driver[2015].include?(3))
|
|
85
|
-
assert(dates_driver[2015].include?(4))
|
|
86
|
-
assert(dates_driver[2015].include?(5))
|
|
87
|
-
assert(dates_driver[2015].include?(6))
|
|
88
|
-
assert(dates_driver[2015].include?(7))
|
|
89
|
-
assert(dates_driver[2015].include?(8))
|
|
90
|
-
end
|
|
91
|
-
end
|