ndr_support 5.10.3 → 5.10.5

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/LICENSE.txt +1 -1
  4. data/README.md +3 -3
  5. data/lib/ndr_support/concerns/working_days.rb +12 -1
  6. data/lib/ndr_support/date_and_time_extensions.rb +12 -11
  7. data/lib/ndr_support/ourdate/build_datetime.rb +1 -5
  8. data/lib/ndr_support/ourdate.rb +1 -5
  9. data/lib/ndr_support/string/clean_methodable.rb +4 -4
  10. data/lib/ndr_support/string/conversions.rb +1 -5
  11. data/lib/ndr_support/version.rb +1 -1
  12. data/ndr_support.gemspec +8 -6
  13. metadata +14 -76
  14. data/.gitignore +0 -19
  15. data/.rubocop.yml +0 -1
  16. data/Gemfile +0 -4
  17. data/Guardfile +0 -24
  18. data/Rakefile +0 -12
  19. data/code_safety.yml +0 -290
  20. data/gemfiles/Gemfile.rails61 +0 -6
  21. data/gemfiles/Gemfile.rails70 +0 -6
  22. data/gemfiles/Gemfile.rails71 +0 -6
  23. data/test/array_test.rb +0 -20
  24. data/test/concerns/working_days_test.rb +0 -148
  25. data/test/date_and_time_extensions_test.rb +0 -56
  26. data/test/daterange_test.rb +0 -307
  27. data/test/hash_test.rb +0 -84
  28. data/test/integer/calculations_test.rb +0 -28
  29. data/test/integer/rounding_test.rb +0 -14
  30. data/test/integer/working_days_test.rb +0 -14
  31. data/test/nil_test.rb +0 -40
  32. data/test/obfuscator_test.rb +0 -26
  33. data/test/ourdate_test.rb +0 -26
  34. data/test/ourtime_test.rb +0 -45
  35. data/test/password_test.rb +0 -129
  36. data/test/regexp_range_test.rb +0 -136
  37. data/test/resources/filesystem_paths.yml +0 -37
  38. data/test/safe_file_test.rb +0 -670
  39. data/test/safe_path_test.rb +0 -168
  40. data/test/string/cleaning_test.rb +0 -247
  41. data/test/string/conversions_test.rb +0 -375
  42. data/test/test_helper.rb +0 -46
  43. data/test/threat_scanner_test.rb +0 -77
  44. data/test/utf8_encoding/control_characters_test.rb +0 -84
  45. data/test/utf8_encoding/force_binary_test.rb +0 -64
  46. data/test/utf8_encoding_test.rb +0 -170
  47. data/test/yaml/serialization_test.rb +0 -200
data/code_safety.yml DELETED
@@ -1,290 +0,0 @@
1
- ---
2
- file safety:
3
- ".github/CODEOWNERS":
4
- comments:
5
- reviewed_by: brian.shand
6
- safe_revision: ee57573b35d6ef0f1a2d8e774ee95aa41a85d40c
7
- ".github/workflows/lint.yml":
8
- comments:
9
- reviewed_by: ollietulloch
10
- safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
11
- ".github/workflows/test.yml":
12
- comments:
13
- reviewed_by: brian.shand
14
- safe_revision: 2253a90ec8db872590a8167fdebe95d6ed677cc2
15
- ".gitignore":
16
- comments:
17
- reviewed_by: josh.pencheon
18
- safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
19
- ".rubocop.yml":
20
- comments:
21
- reviewed_by: brian.shand
22
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
23
- CHANGELOG.md:
24
- comments:
25
- reviewed_by: ollietulloch
26
- safe_revision: 8cb498126d68a19f880b0cd1b83b127c8ec90a89
27
- CODE_OF_CONDUCT.md:
28
- comments:
29
- reviewed_by: timgentry
30
- safe_revision: c752769b91c0e782be0acf44e56bbc066a275365
31
- Gemfile:
32
- comments:
33
- reviewed_by: timgentry
34
- safe_revision: 6a7c3764e5315981070eba27b9f0be9d9182476c
35
- Guardfile:
36
- comments:
37
- reviewed_by: timgentry
38
- safe_revision: e33e9dae7f38bc449ce9276515a539836dbbbd53
39
- LICENSE.txt:
40
- comments:
41
- reviewed_by: timgentry
42
- safe_revision: 90328cca8494539257e192a63b240a91c89f0616
43
- README.md:
44
- comments:
45
- reviewed_by: ollietulloch
46
- safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
47
- Rakefile:
48
- comments:
49
- reviewed_by: timgentry
50
- safe_revision: e33e9dae7f38bc449ce9276515a539836dbbbd53
51
- gemfiles/Gemfile.rails61:
52
- comments:
53
- reviewed_by: brian.shand
54
- safe_revision: 16254a4332aab074a27c8e13859dc4712e707122
55
- gemfiles/Gemfile.rails70:
56
- comments:
57
- reviewed_by: brian.shand
58
- safe_revision: 16254a4332aab074a27c8e13859dc4712e707122
59
- gemfiles/Gemfile.rails71:
60
- comments:
61
- reviewed_by: brian.shand
62
- safe_revision: 2253a90ec8db872590a8167fdebe95d6ed677cc2
63
- lib/ndr_support.rb:
64
- comments:
65
- reviewed_by: brian.shand
66
- safe_revision: 44fbdf72f47f4022c7dc9148150ebc18589dac8f
67
- lib/ndr_support/array.rb:
68
- comments:
69
- reviewed_by: pauleves
70
- safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
71
- lib/ndr_support/concerns/working_days.rb:
72
- comments:
73
- reviewed_by: brian.shand
74
- safe_revision: 6fb8c080befbb9c741c2bc3a2fadb29fe1c3d0aa
75
- lib/ndr_support/date_and_time_extensions.rb:
76
- comments:
77
- reviewed_by: brian.shand
78
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
79
- lib/ndr_support/daterange.rb:
80
- comments:
81
- reviewed_by: brian.shand
82
- safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
83
- lib/ndr_support/hash.rb:
84
- comments:
85
- reviewed_by: pauleves
86
- safe_revision: 506a317e59d0ccb5b32d813b74d822f35a55cea9
87
- lib/ndr_support/integer/calculations.rb:
88
- comments:
89
- reviewed_by: josh.pencheon
90
- safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
91
- lib/ndr_support/integer/rounding.rb:
92
- comments:
93
- reviewed_by: josh.pencheon
94
- safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
95
- lib/ndr_support/integer/working_days.rb:
96
- comments:
97
- reviewed_by: josh.pencheon
98
- safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
99
- lib/ndr_support/nil.rb:
100
- comments:
101
- reviewed_by: pauleves
102
- safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
103
- lib/ndr_support/obfuscator.rb:
104
- comments:
105
- reviewed_by: brian.shand
106
- safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
107
- lib/ndr_support/ourdate.rb:
108
- comments:
109
- reviewed_by: brian.shand
110
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
111
- lib/ndr_support/ourdate/build_datetime.rb:
112
- comments:
113
- reviewed_by: brian.shand
114
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
115
- lib/ndr_support/ourtime.rb:
116
- comments:
117
- reviewed_by: brian.shand
118
- safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
119
- lib/ndr_support/password.rb:
120
- comments: with input from brian.shand
121
- reviewed_by: josh.pencheon
122
- safe_revision: f5d1ba50d378286c0541f300d73844240e2eb7c1
123
- lib/ndr_support/password/constants.rb:
124
- comments: with input from brian.shand
125
- reviewed_by: josh.pencheon
126
- safe_revision: f5d1ba50d378286c0541f300d73844240e2eb7c1
127
- lib/ndr_support/regexp_range.rb:
128
- comments:
129
- reviewed_by: pauleves
130
- safe_revision: f9341d1c7f797f9fe81af937c383d41c23872b2f
131
- lib/ndr_support/safe_file.rb:
132
- comments:
133
- reviewed_by: josh.pencheon
134
- safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
135
- lib/ndr_support/safe_path.rb:
136
- comments:
137
- reviewed_by: brian.shand
138
- safe_revision: f4f7cb0803ea34a2f1ba83495d8bcbd942786bce
139
- lib/ndr_support/string/clean_methodable.rb:
140
- comments:
141
- reviewed_by: ollietulloch
142
- safe_revision: ff21f98e6608eedb4b33f977778736b38f9fbacb
143
- lib/ndr_support/string/cleaning.rb:
144
- comments:
145
- reviewed_by: ollietulloch
146
- safe_revision: d99c4bf5d2cbbfe78101beff399e7da8645417b2
147
- lib/ndr_support/string/conversions.rb:
148
- comments:
149
- reviewed_by: brian.shand
150
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
151
- lib/ndr_support/tasks.rb:
152
- comments:
153
- reviewed_by: timgentry
154
- safe_revision: 62337584a32e5c30c2e9af7cd998a9df684885cc
155
- lib/ndr_support/threat_scanner.rb:
156
- comments:
157
- reviewed_by: brianshand
158
- safe_revision: befa1d4f27448d5be4e133f442c2b5fbac7d8f25
159
- lib/ndr_support/utf8_encoding.rb:
160
- comments:
161
- reviewed_by: josh.pencheon
162
- safe_revision: 8e024a4bacfd36e172aad4b800f1960faae0b4b6
163
- lib/ndr_support/utf8_encoding/control_characters.rb:
164
- comments:
165
- reviewed_by: ollietulloch
166
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
167
- lib/ndr_support/utf8_encoding/force_binary.rb:
168
- comments:
169
- reviewed_by: ollietulloch
170
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
171
- lib/ndr_support/utf8_encoding/object_support.rb:
172
- comments:
173
- reviewed_by: ollietulloch
174
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
175
- lib/ndr_support/version.rb:
176
- comments:
177
- reviewed_by: ollietulloch
178
- safe_revision: 8cb498126d68a19f880b0cd1b83b127c8ec90a89
179
- lib/ndr_support/working_days.rb:
180
- comments:
181
- reviewed_by: josh.pencheon
182
- safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
183
- lib/ndr_support/yaml/serialization_migration.rb:
184
- comments:
185
- reviewed_by: brian.shand
186
- safe_revision: c764a4d8c251b5076ed3d60391c8271bb5a099bc
187
- ndr_support.gemspec:
188
- comments:
189
- reviewed_by: brian.shand
190
- safe_revision: 2253a90ec8db872590a8167fdebe95d6ed677cc2
191
- test/array_test.rb:
192
- comments:
193
- reviewed_by: timgentry
194
- safe_revision: 2a5d30674dc9dde336e1dbbbf3c8a98905647432
195
- test/concerns/working_days_test.rb:
196
- comments:
197
- reviewed_by: brian.shand
198
- safe_revision: bac214f4c93d8753268825408fc560171fac91c0
199
- test/date_and_time_extensions_test.rb:
200
- comments:
201
- reviewed_by: brian.shand
202
- safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
203
- test/daterange_test.rb:
204
- comments:
205
- reviewed_by: brian.shand
206
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
207
- test/hash_test.rb:
208
- comments:
209
- reviewed_by: timgentry
210
- safe_revision: 2a5d30674dc9dde336e1dbbbf3c8a98905647432
211
- test/integer/calculations_test.rb:
212
- comments:
213
- reviewed_by: josh.pencheon
214
- safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
215
- test/integer/rounding_test.rb:
216
- comments:
217
- reviewed_by: josh.pencheon
218
- safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
219
- test/integer/working_days_test.rb:
220
- comments:
221
- reviewed_by: josh.pencheon
222
- safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
223
- test/nil_test.rb:
224
- comments:
225
- reviewed_by: timgentry
226
- safe_revision: 2a5d30674dc9dde336e1dbbbf3c8a98905647432
227
- test/obfuscator_test.rb:
228
- comments:
229
- reviewed_by: brian.shand
230
- safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
231
- test/ourdate_test.rb:
232
- comments:
233
- reviewed_by: brian.shand
234
- safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
235
- test/ourtime_test.rb:
236
- comments:
237
- reviewed_by: brian.shand
238
- safe_revision: b9bc1e18464a27f84e69ebea083dd6a8d351c8cb
239
- test/password_test.rb:
240
- comments: with input from brian.shand
241
- reviewed_by: josh.pencheon
242
- safe_revision: f5d1ba50d378286c0541f300d73844240e2eb7c1
243
- test/regexp_range_test.rb:
244
- comments:
245
- reviewed_by: brian.shand
246
- safe_revision: f4f7cb0803ea34a2f1ba83495d8bcbd942786bce
247
- test/resources/filesystem_paths.yml:
248
- comments:
249
- reviewed_by: timgentry
250
- safe_revision: 81061f85ccdf8933adc7f104d7eeaef1e2d71e26
251
- test/safe_file_test.rb:
252
- comments:
253
- reviewed_by: josh.pencheon
254
- safe_revision: 24ba08d3a8f4b284678244aaffa2aaa347256900
255
- test/safe_path_test.rb:
256
- comments:
257
- reviewed_by: timgentry
258
- safe_revision: b562d0c15ff1b1d565522a47e6bae47ea09706f0
259
- test/string/cleaning_test.rb:
260
- comments:
261
- reviewed_by: ollietulloch
262
- safe_revision: d99c4bf5d2cbbfe78101beff399e7da8645417b2
263
- test/string/conversions_test.rb:
264
- comments:
265
- reviewed_by: brian.shand
266
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
267
- test/test_helper.rb:
268
- comments:
269
- reviewed_by: brian.shand
270
- safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
271
- test/threat_scanner_test.rb:
272
- comments:
273
- reviewed_by: ollietulloch
274
- safe_revision: fbb6ef9804040aa2e38257d9f5c487bde18a490d
275
- test/utf8_encoding/control_characters_test.rb:
276
- comments:
277
- reviewed_by: timgentry
278
- safe_revision: d210b982841611381a0df02d8f2db9c13e41e42f
279
- test/utf8_encoding/force_binary_test.rb:
280
- comments:
281
- reviewed_by: timgentry
282
- safe_revision: 29595e6431587ff9b7db6e3ad3abbb3577bff99c
283
- test/utf8_encoding_test.rb:
284
- comments:
285
- reviewed_by: timgentry
286
- safe_revision: 2a5d30674dc9dde336e1dbbbf3c8a98905647432
287
- test/yaml/serialization_test.rb:
288
- comments:
289
- reviewed_by: brian.shand
290
- safe_revision: c764a4d8c251b5076ed3d60391c8271bb5a099bc
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'activerecord', '~> 6.1.0'
6
- gem 'activesupport', '~> 6.1.0'
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'activerecord', '~> 7.0.0'
6
- gem 'activesupport', '~> 7.0.0'
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'activerecord', '~> 7.1.0'
6
- gem 'activesupport', '~> 7.1.0'
data/test/array_test.rb DELETED
@@ -1,20 +0,0 @@
1
- require 'test_helper'
2
-
3
- # This tests our Array extension
4
- class ArrayTest < Minitest::Test
5
- test 'Arrays should be extended with #permutations' do
6
- assert [].respond_to?(:permutations)
7
- end
8
-
9
- test 'Array#permutations should calculate permutations correctly' do
10
- array = [1, 2, 3]
11
- permutations = [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
12
- assert_equal array.length.factorial, array.permutations.length
13
- assert_equal permutations.sort, array.permutations.sort
14
- end
15
-
16
- test 'Array#permutations should permute duplicates' do
17
- array = [1, 1]
18
- assert_equal [[1, 1], [1, 1]], array.permutations
19
- end
20
- end
@@ -1,148 +0,0 @@
1
- require 'test_helper'
2
-
3
- # This tests our WorkingDays Time/Date/DateTime extension
4
- class WorkingDaysTest < Minitest::Test
5
- def setup
6
- @normal_date = Date.parse('2015-02-02') # Monday 2nd Feb 2015
7
- @normal_time = Time.parse('2015-02-02 2pm') # Monday 2nd Feb 2015
8
- @normal_date_time = DateTime.parse('2015-02-02 11am') # Monday 2nd Feb 2015
9
-
10
- @easter_date = Date.parse('2015-04-06') # Easter Monday, 2015
11
- @easter_time = Time.parse('2015-04-06 2pm') # Easter Monday, 2015
12
- @easter_date_time = DateTime.parse('2015-04-06 11am') # Easter Monday, 2015
13
- end
14
-
15
- test 'should identify weekdays' do
16
- assert Date.parse('2015-12-25').weekday?
17
- assert Time.parse('2015-12-25 3pm').weekday?
18
- assert DateTime.parse('2015-12-25 3pm').weekday?
19
-
20
- refute Date.parse('2015-12-26').weekday?
21
- refute Time.parse('2015-12-26 3pm').weekday?
22
- refute DateTime.parse('2015-12-26 3pm').weekday?
23
- end
24
-
25
- test 'should identify bank holidays' do
26
- assert Date.parse('2015-12-25').public_holiday?
27
- assert Time.parse('2015-12-25 3pm').public_holiday?
28
- assert DateTime.parse('2015-12-25 3pm').public_holiday?
29
-
30
- # Boxing Day 2015 is a Saturday; the bank holiday a
31
- # substitute day, on the following Monday:
32
- refute Date.parse('2015-12-26').public_holiday?
33
- refute Time.parse('2015-12-26 3pm').public_holiday?
34
- refute DateTime.parse('2015-12-26 3pm').public_holiday?
35
-
36
- assert Date.parse('2015-12-28').public_holiday?
37
- assert Time.parse('2015-12-28 3pm').public_holiday?
38
- assert DateTime.parse('2015-12-28 3pm').public_holiday?
39
- end
40
-
41
- test 'should allow comparison of Time and DateTime' do
42
- @normal_time.working_days_until(@normal_date_time)
43
- @normal_date_time.working_days_until(@normal_time)
44
- end
45
-
46
- test 'should allow comparison of DateTime and Date' do
47
- @normal_date_time.working_days_until(@normal_date)
48
- @normal_date.working_days_until(@normal_date_time)
49
- end
50
-
51
- test 'should be zero working days between same normal day' do
52
- assert_equal 0, @normal_date.working_days_until(@normal_date)
53
- assert_equal 0, @normal_time.working_days_until(@normal_time + 6.hours)
54
- assert_equal 0, @normal_date_time.working_days_until(@normal_date_time + 6.hours)
55
- end
56
-
57
- test 'Monday -> Friday should be 4 working days' do
58
- assert_equal 4, @normal_date.working_days_until(@normal_date + 4.days)
59
- assert_equal 4, @normal_time.working_days_until(@normal_time + 4.days)
60
- assert_equal 4, @normal_date_time.working_days_until(@normal_date_time + 4.days)
61
- end
62
-
63
- test 'Friday <- Monday should be -4 working days' do
64
- assert_equal(-4, (@normal_date + 4.days).working_days_until(@normal_date))
65
- assert_equal(-4, (@normal_time + 4.days).working_days_until(@normal_time))
66
- assert_equal(-4, (@normal_date_time + 4.days).working_days_until(@normal_date_time))
67
- end
68
-
69
- test 'Saturday -> Sunday should be 0 working days' do
70
- assert_equal 0, (@normal_date - 2.days).working_days_until(@normal_date - 1.day)
71
- assert_equal 0, (@normal_time - 2.days).working_days_until(@normal_time - 1.day)
72
- assert_equal 0, (@normal_date_time - 2.days).working_days_until(@normal_date_time - 1.day)
73
- end
74
-
75
- test 'Sunday <- Saturday should be 0 working days' do
76
- assert_equal 0, (@normal_date - 1.day).working_days_until(@normal_date - 2.days)
77
- assert_equal 0, (@normal_time - 1.day).working_days_until(@normal_time - 2.days)
78
- assert_equal 0, (@normal_date_time - 1.day).working_days_until(@normal_date_time - 2.days)
79
- end
80
-
81
- test 'Monday -> next Monday should be 5 working days' do
82
- assert_equal 5, @normal_date.working_days_until(@normal_date + 7.days)
83
- assert_equal 5, @normal_time.working_days_until(@normal_time + 7.days)
84
- assert_equal 5, @normal_date_time.working_days_until(@normal_date_time + 7.days)
85
- end
86
-
87
- test 'Monday -> Easter Monday should be 3 working days' do
88
- assert_equal 3, (@easter_date - 7.days).working_days_until(@easter_date)
89
- assert_equal 3, (@easter_time - 7.days).working_days_until(@easter_time)
90
- assert_equal 3, (@easter_date_time - 7.days).working_days_until(@easter_date_time)
91
- end
92
-
93
- test 'Tuesday -> Tuesday over Easter should be 3 working days' do
94
- assert_equal 3, (@easter_date - 6.days).working_days_until(@easter_date + 1.day)
95
- assert_equal 3, (@easter_time - 6.days).working_days_until(@easter_time + 1.day)
96
- assert_equal 3, (@easter_date_time - 6.days).working_days_until(@easter_date_time + 1.day)
97
- end
98
-
99
- test 'Good Friday -> Friday should be 4 working days' do
100
- assert_equal 4, (@easter_date - 3.days).working_days_until(@easter_date + 4.day)
101
- assert_equal 4, (@easter_time - 3.days).working_days_until(@easter_time + 4.day)
102
- assert_equal 4, (@easter_date_time - 3.days).working_days_until(@easter_date_time + 4.day)
103
- end
104
-
105
- test 'Friday -> Monday should be 1 working day' do
106
- assert_equal 1, (@normal_date - 3.days).working_days_until(@normal_date)
107
- assert_equal 1, (@normal_time - 3.days).working_days_until(@normal_time)
108
- assert_equal 1, (@normal_date_time - 3.days).working_days_until(@normal_date_time)
109
- end
110
-
111
- test 'A year of week days' do
112
- assert_equal 261, @normal_date.weekdays_until(@normal_date + 1.year)
113
- assert_equal 261, @normal_time.weekdays_until(@normal_time + 1.year)
114
- assert_equal 261, @normal_date_time.weekdays_until(@normal_date_time + 1.year)
115
- end
116
-
117
- test 'A year of working days' do
118
- assert_equal 253, @normal_date.working_days_until(@normal_date + 1.year)
119
- assert_equal 253, @normal_time.working_days_until(@normal_time + 1.year)
120
- assert_equal 253, @normal_date_time.working_days_until(@normal_date_time + 1.year)
121
- end
122
-
123
- test 'against GOV.UK holidays' do
124
- require 'net/http'
125
- require 'json'
126
-
127
- url = 'https://www.gov.uk/bank-holidays/england-and-wales.json'
128
- response = Net::HTTP.get(URI(url))
129
-
130
- events = JSON.parse(response)['events']
131
- missing_holidays = events.collect do |event|
132
- event_date = event['date']
133
- parsed_date = Date.parse(event_date)
134
- if parsed_date.public_holiday?
135
- nil
136
- else
137
- [event_date, format(" '%<date>s', # %<day>-9s - %<title>s",
138
- date: event_date, day: parsed_date.strftime('%A'),
139
- title: event['title'])]
140
- end
141
- end.compact
142
- if missing_holidays.any?
143
- flunk (["#{missing_holidays.collect(&:first).join(', ')} should be public holidays in " \
144
- 'lib/ndr_support/concerns/working_days.rb:'] +
145
- missing_holidays.collect(&:last)).join("\n")
146
- end
147
- end
148
- end
@@ -1,56 +0,0 @@
1
- require 'test_helper'
2
-
3
- # This tests our various date and time class extensions
4
- # Note that these will probably all need to be changed in a major bump of ndr_support
5
- # once we've moved everything to Rails 7.
6
- class DateAndTimeExtensionsTest < Minitest::Test
7
- def test_date_to_s
8
- d = Date.new(2000, 2, 1)
9
- assert_equal '2000-02-01', d.to_default_s, 'Rails 7 default to_s'
10
- assert_equal '01.02.2000', d.to_formatted_s(:default), 'Rails 6 default to_s'
11
- assert_equal d.to_formatted_s(:default), d.to_s,
12
- 'We plan to change default to_s behaviour in a major version bump'
13
- end
14
-
15
- def test_datetime_to_s
16
- bst_datetime = DateTime.new(2014, 4, 1, 0, 0, 0, '+1')
17
- assert_equal '2014-04-01T00:00:00+01:00', bst_datetime.to_default_s, 'Rails 7 default to_s'
18
- assert_equal '01.04.2014', bst_datetime.to_formatted_s(:default), 'Rails 6 default to_s'
19
- assert_equal bst_datetime.to_formatted_s(:default), bst_datetime.to_s,
20
- 'We plan to change default to_s behaviour in a major version bump'
21
-
22
- gmt_datetime = DateTime.new(2014, 3, 1, 0, 0, 0, '+0')
23
- assert_equal '2014-03-01T00:00:00+00:00', gmt_datetime.to_default_s, 'Rails 7 default to_s'
24
- assert_equal '01.03.2014', gmt_datetime.to_formatted_s(:default), 'Rails 6 default to_s'
25
- assert_equal gmt_datetime.to_formatted_s(:default), gmt_datetime.to_s,
26
- 'We plan to change default to_s behaviour in a major version bump'
27
-
28
- datetime_with_hhmmss = DateTime.new(2014, 4, 1, 12, 35, 11, '+0')
29
- assert_equal '2014-04-01T12:35:11+00:00', datetime_with_hhmmss.to_default_s,
30
- 'Rails 7 default to_s'
31
- assert_equal '01.04.2014 12:35', datetime_with_hhmmss.to_formatted_s(:default),
32
- 'Rails 6 default to_s'
33
- assert_equal datetime_with_hhmmss.to_formatted_s(:default), datetime_with_hhmmss.to_s,
34
- 'We plan to change default to_s behaviour in a major version bump'
35
- end
36
-
37
- def test_time_to_s
38
- time = Time.new(2014, 4, 1, 12, 35, 11.5, '+01:00')
39
- assert_equal '2014-04-01 12:35:11 +0100', time.to_default_s, 'Rails 7 default to_s'
40
- assert_equal '01.04.2014 12:35', time.to_formatted_s(:default), 'Rails 6 default to_s'
41
- assert_equal time.to_formatted_s(:default), time.to_s,
42
- 'We plan to change default to_s behaviour in a major version bump'
43
- end
44
-
45
- def test_time_with_zone_to_s
46
- time_with_zone = Time.find_zone('Europe/London').local(2014, 4, 1, 12, 35, 11.5)
47
- assert_equal 'BST', time_with_zone.zone
48
- # Without ndr_support extensions, we'd expect "2014-04-01 12:35:11 +0100"
49
- # but we have to trick the database into assuming all times are UTC to retain local time
50
- assert_equal '2014-04-01 12:35:11 UTC', time_with_zone.to_default_s,
51
- 'Rails 7 default to_s with our date and time formatting'
52
- assert_equal '01.04.2014 12:35', time_with_zone.to_formatted_s(:default), 'Rails 6 default to_s'
53
- assert_equal time_with_zone.to_formatted_s(:default), time_with_zone.to_s,
54
- 'We plan to change default to_s behaviour in a major version bump'
55
- end
56
- end