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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/LICENSE.txt +1 -1
- data/README.md +3 -3
- data/lib/ndr_support/concerns/working_days.rb +12 -1
- data/lib/ndr_support/date_and_time_extensions.rb +12 -11
- data/lib/ndr_support/ourdate/build_datetime.rb +1 -5
- data/lib/ndr_support/ourdate.rb +1 -5
- data/lib/ndr_support/string/clean_methodable.rb +4 -4
- data/lib/ndr_support/string/conversions.rb +1 -5
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +8 -6
- metadata +14 -76
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -1
- data/Gemfile +0 -4
- data/Guardfile +0 -24
- data/Rakefile +0 -12
- data/code_safety.yml +0 -290
- data/gemfiles/Gemfile.rails61 +0 -6
- data/gemfiles/Gemfile.rails70 +0 -6
- data/gemfiles/Gemfile.rails71 +0 -6
- data/test/array_test.rb +0 -20
- data/test/concerns/working_days_test.rb +0 -148
- data/test/date_and_time_extensions_test.rb +0 -56
- data/test/daterange_test.rb +0 -307
- data/test/hash_test.rb +0 -84
- data/test/integer/calculations_test.rb +0 -28
- data/test/integer/rounding_test.rb +0 -14
- data/test/integer/working_days_test.rb +0 -14
- data/test/nil_test.rb +0 -40
- data/test/obfuscator_test.rb +0 -26
- data/test/ourdate_test.rb +0 -26
- data/test/ourtime_test.rb +0 -45
- data/test/password_test.rb +0 -129
- data/test/regexp_range_test.rb +0 -136
- data/test/resources/filesystem_paths.yml +0 -37
- data/test/safe_file_test.rb +0 -670
- data/test/safe_path_test.rb +0 -168
- data/test/string/cleaning_test.rb +0 -247
- data/test/string/conversions_test.rb +0 -375
- data/test/test_helper.rb +0 -46
- data/test/threat_scanner_test.rb +0 -77
- data/test/utf8_encoding/control_characters_test.rb +0 -84
- data/test/utf8_encoding/force_binary_test.rb +0 -64
- data/test/utf8_encoding_test.rb +0 -170
- 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
|
data/gemfiles/Gemfile.rails61
DELETED
data/gemfiles/Gemfile.rails70
DELETED
data/gemfiles/Gemfile.rails71
DELETED
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
|