holidays 9.1.2 → 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.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/README.md +38 -2
  4. data/lib/generated_definitions/MANIFEST +2 -0
  5. data/lib/generated_definitions/REGIONS.rb +2 -2
  6. data/lib/generated_definitions/au.rb +16 -42
  7. data/lib/generated_definitions/europe.rb +7 -15
  8. data/lib/generated_definitions/fr.rb +2 -2
  9. data/lib/generated_definitions/gb.rb +3 -3
  10. data/lib/generated_definitions/il.rb +74 -0
  11. data/lib/generated_definitions/lu.rb +1 -1
  12. data/lib/generated_definitions/mc.rb +36 -0
  13. data/lib/generated_definitions/northamerica.rb +3 -2
  14. data/lib/generated_definitions/nz.rb +9 -1
  15. data/lib/generated_definitions/pl.rb +3 -11
  16. data/lib/generated_definitions/us.rb +3 -2
  17. data/lib/holidays/definition/context/function_processor.rb +4 -5
  18. data/lib/holidays/definition/context/generator.rb +3 -1
  19. data/lib/holidays/version.rb +1 -1
  20. metadata +5 -309
  21. data/.github/workflows/changelog-check.yml +0 -47
  22. data/.github/workflows/release.yml +0 -46
  23. data/.github/workflows/ruby.yml +0 -26
  24. data/.gitmodules +0 -3
  25. data/CODE_OF_CONDUCT.md +0 -74
  26. data/Gemfile +0 -8
  27. data/Makefile +0 -56
  28. data/Rakefile +0 -128
  29. data/bin/console +0 -7
  30. data/bin/setup +0 -6
  31. data/doc/CONTRIBUTING.md +0 -72
  32. data/doc/MAINTAINERS.md +0 -79
  33. data/doc/REFERENCES +0 -19
  34. data/holidays.gemspec +0 -31
  35. data/test/coverage_report.rb +0 -24
  36. data/test/data/test_custom_year_range_holiday_defs.yaml +0 -31
  37. data/test/data/test_date_transform_conflict_region_1.yaml +0 -14
  38. data/test/data/test_date_transform_conflict_region_2.yaml +0 -14
  39. data/test/data/test_invalid_region.rb +0 -15
  40. data/test/data/test_region.rb +0 -15
  41. data/test/data/test_single_custom_holiday_defs.yaml +0 -12
  42. data/test/data/test_single_custom_holiday_with_custom_procs.yaml +0 -28
  43. data/test/defs/test_defs_ar.rb +0 -69
  44. data/test/defs/test_defs_at.rb +0 -31
  45. data/test/defs/test_defs_au.rb +0 -233
  46. data/test/defs/test_defs_be_fr.rb +0 -45
  47. data/test/defs/test_defs_be_nl.rb +0 -45
  48. data/test/defs/test_defs_bg.rb +0 -41
  49. data/test/defs/test_defs_br.rb +0 -49
  50. data/test/defs/test_defs_ca.rb +0 -289
  51. data/test/defs/test_defs_ch.rb +0 -51
  52. data/test/defs/test_defs_cl.rb +0 -69
  53. data/test/defs/test_defs_co.rb +0 -113
  54. data/test/defs/test_defs_cr.rb +0 -29
  55. data/test/defs/test_defs_cy.rb +0 -41
  56. data/test/defs/test_defs_cz.rb +0 -37
  57. data/test/defs/test_defs_de.rb +0 -91
  58. data/test/defs/test_defs_dk.rb +0 -47
  59. data/test/defs/test_defs_ecbtarget.rb +0 -27
  60. data/test/defs/test_defs_ee.rb +0 -41
  61. data/test/defs/test_defs_es.rb +0 -137
  62. data/test/defs/test_defs_europe.rb +0 -1526
  63. data/test/defs/test_defs_fed_ex.rb +0 -24
  64. data/test/defs/test_defs_federalreserve.rb +0 -119
  65. data/test/defs/test_defs_federalreservebanks.rb +0 -251
  66. data/test/defs/test_defs_fedex.rb +0 -31
  67. data/test/defs/test_defs_fi.rb +0 -59
  68. data/test/defs/test_defs_fr.rb +0 -43
  69. data/test/defs/test_defs_gb.rb +0 -159
  70. data/test/defs/test_defs_ge.rb +0 -53
  71. data/test/defs/test_defs_gr.rb +0 -41
  72. data/test/defs/test_defs_hk.rb +0 -93
  73. data/test/defs/test_defs_hr.rb +0 -45
  74. data/test/defs/test_defs_hu.rb +0 -47
  75. data/test/defs/test_defs_ie.rb +0 -53
  76. data/test/defs/test_defs_in.rb +0 -94
  77. data/test/defs/test_defs_is.rb +0 -51
  78. data/test/defs/test_defs_it.rb +0 -57
  79. data/test/defs/test_defs_jp.rb +0 -159
  80. data/test/defs/test_defs_ke.rb +0 -31
  81. data/test/defs/test_defs_kr.rb +0 -37
  82. data/test/defs/test_defs_kz.rb +0 -39
  83. data/test/defs/test_defs_li.rb +0 -35
  84. data/test/defs/test_defs_lt.rb +0 -65
  85. data/test/defs/test_defs_lu.rb +0 -35
  86. data/test/defs/test_defs_lv.rb +0 -98
  87. data/test/defs/test_defs_ma.rb +0 -29
  88. data/test/defs/test_defs_mt_en.rb +0 -41
  89. data/test/defs/test_defs_mt_mt.rb +0 -41
  90. data/test/defs/test_defs_mx.rb +0 -49
  91. data/test/defs/test_defs_my.rb +0 -23
  92. data/test/defs/test_defs_nerc.rb +0 -29
  93. data/test/defs/test_defs_ng.rb +0 -29
  94. data/test/defs/test_defs_nl.rb +0 -33
  95. data/test/defs/test_defs_no.rb +0 -43
  96. data/test/defs/test_defs_northamerica.rb +0 -674
  97. data/test/defs/test_defs_nyse.rb +0 -46
  98. data/test/defs/test_defs_nz.rb +0 -67
  99. data/test/defs/test_defs_pe.rb +0 -47
  100. data/test/defs/test_defs_ph.rb +0 -29
  101. data/test/defs/test_defs_pl.rb +0 -229
  102. data/test/defs/test_defs_pt.rb +0 -47
  103. data/test/defs/test_defs_ro.rb +0 -69
  104. data/test/defs/test_defs_rs_cyrl.rb +0 -46
  105. data/test/defs/test_defs_rs_la.rb +0 -46
  106. data/test/defs/test_defs_ru.rb +0 -34
  107. data/test/defs/test_defs_scandinavia.rb +0 -215
  108. data/test/defs/test_defs_se.rb +0 -59
  109. data/test/defs/test_defs_sg.rb +0 -25
  110. data/test/defs/test_defs_si.rb +0 -105
  111. data/test/defs/test_defs_sk.rb +0 -37
  112. data/test/defs/test_defs_southamerica.rb +0 -327
  113. data/test/defs/test_defs_th.rb +0 -33
  114. data/test/defs/test_defs_tn.rb +0 -27
  115. data/test/defs/test_defs_tr.rb +0 -60
  116. data/test/defs/test_defs_tsx.rb +0 -70
  117. data/test/defs/test_defs_ua.rb +0 -41
  118. data/test/defs/test_defs_unitednations.rb +0 -11
  119. data/test/defs/test_defs_ups.rb +0 -31
  120. data/test/defs/test_defs_us.rb +0 -394
  121. data/test/defs/test_defs_ve.rb +0 -35
  122. data/test/defs/test_defs_vi.rb +0 -22
  123. data/test/defs/test_defs_za.rb +0 -35
  124. data/test/e2e/README.md +0 -52
  125. data/test/e2e/data/test_multiple_regions_with_conflicts_region_1.yaml +0 -38
  126. data/test/e2e/data/test_multiple_regions_with_conflicts_region_2.yaml +0 -38
  127. data/test/e2e/data/test_multiple_regions_with_conflicts_region_3.yaml +0 -38
  128. data/test/e2e/test_all_regions.rb +0 -49
  129. data/test/e2e/test_any_holidays_during_work_week.rb +0 -90
  130. data/test/e2e/test_holidays.rb +0 -244
  131. data/test/e2e/test_holidays_between.rb +0 -87
  132. data/test/e2e/test_multiple_regions.rb +0 -71
  133. data/test/e2e/test_multiple_regions_with_conflict.rb +0 -228
  134. data/test/e2e/test_nonstandard_regions.rb +0 -25
  135. data/test/holidays/core_extensions/test_date.rb +0 -122
  136. data/test/holidays/core_extensions/test_date_time.rb +0 -60
  137. data/test/holidays/date_calculator/test_day_of_month.rb +0 -27
  138. data/test/holidays/date_calculator/test_easter_gregorian.rb +0 -30
  139. data/test/holidays/date_calculator/test_easter_julian.rb +0 -36
  140. data/test/holidays/date_calculator/test_lunar_date.rb +0 -89
  141. data/test/holidays/date_calculator/test_weekend_modifier.rb +0 -54
  142. data/test/holidays/definition/context/test_function_processor.rb +0 -199
  143. data/test/holidays/definition/context/test_generator.rb +0 -226
  144. data/test/holidays/definition/context/test_load.rb +0 -37
  145. data/test/holidays/definition/context/test_merger.rb +0 -25
  146. data/test/holidays/definition/decorator/test_custom_method_proc.rb +0 -113
  147. data/test/holidays/definition/decorator/test_custom_method_source.rb +0 -96
  148. data/test/holidays/definition/decorator/test_test.rb +0 -123
  149. data/test/holidays/definition/generator/test_module.rb +0 -268
  150. data/test/holidays/definition/generator/test_regions.rb +0 -97
  151. data/test/holidays/definition/generator/test_test.rb +0 -113
  152. data/test/holidays/definition/parser/test_custom_method.rb +0 -79
  153. data/test/holidays/definition/parser/test_test.rb +0 -142
  154. data/test/holidays/definition/repository/test_cache.rb +0 -123
  155. data/test/holidays/definition/repository/test_custom_methods.rb +0 -43
  156. data/test/holidays/definition/repository/test_holidays_by_month.rb +0 -275
  157. data/test/holidays/definition/repository/test_proc_result_cache.rb +0 -91
  158. data/test/holidays/definition/repository/test_regions.rb +0 -104
  159. data/test/holidays/definition/validator/test_custom_method.rb +0 -94
  160. data/test/holidays/definition/validator/test_region.rb +0 -54
  161. data/test/holidays/definition/validator/test_test.rb +0 -60
  162. data/test/holidays/finder/context/test_between.rb +0 -172
  163. data/test/holidays/finder/context/test_dates_driver_builder.rb +0 -91
  164. data/test/holidays/finder/context/test_next_holiday.rb +0 -156
  165. data/test/holidays/finder/context/test_parse_options.rb +0 -141
  166. data/test/holidays/finder/context/test_search.rb +0 -290
  167. data/test/holidays/finder/context/test_year_holiday.rb +0 -202
  168. data/test/holidays/finder/rules/test_in_region.rb +0 -42
  169. data/test/holidays/finder/rules/test_year_range.rb +0 -166
  170. data/test/integration/README.md +0 -48
  171. data/test/integration/data/test_custom_govt_holiday_defs.yaml +0 -5
  172. data/test/integration/data/test_custom_informal_holidays_defs.yaml +0 -11
  173. data/test/integration/data/test_multiple_custom_holiday_defs.yaml +0 -12
  174. data/test/integration/test_custom_holidays.rb +0 -41
  175. data/test/integration/test_custom_informal_holidays.rb +0 -15
  176. data/test/integration/test_custom_year_range_holidays.rb +0 -35
  177. data/test/smoke/README.md +0 -31
  178. data/test/smoke/test_available_regions.rb +0 -18
  179. data/test/smoke/test_smoke.rb +0 -74
  180. 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