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