ndr_support 5.7.0 → 5.8.2
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 +23 -0
- data/README.md +1 -1
- data/code_safety.yml +46 -40
- data/lib/ndr_support/concerns/working_days.rb +10 -0
- data/lib/ndr_support/daterange.rb +24 -11
- data/lib/ndr_support/integer/julian_date_conversions.rb +0 -2
- data/lib/ndr_support/ourdate.rb +4 -2
- data/lib/ndr_support/ourtime.rb +2 -2
- data/lib/ndr_support/safe_path.rb +1 -0
- data/lib/ndr_support/string/cleaning.rb +1 -0
- data/lib/ndr_support/string/conversions.rb +1 -1
- data/lib/ndr_support/threat_scanner.rb +1 -0
- data/lib/ndr_support/utf8_encoding/control_characters.rb +0 -2
- data/lib/ndr_support/utf8_encoding/force_binary.rb +0 -2
- data/lib/ndr_support/utf8_encoding/object_support.rb +0 -2
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +4 -6
- data/test/daterange_test.rb +39 -5
- data/test/string/cleaning_test.rb +3 -0
- data/test/string/conversions_test.rb +3 -3
- data/test/threat_scanner_test.rb +2 -0
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3f90df368cddc8835eb228b45b2e03088caf7ff494c6dd71538a255ed81ee17
|
4
|
+
data.tar.gz: b7efe09d5283db3ee78934b727893817c772bb1564c02eaa453e216d562e23b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b5dd0eeb3aec3bf88b4bc71620a661f3fe8a76eb9deef2c6dd8ec8e4d42faf9328f4934531fc0b36e65947f62d7163e4d0165324c8f17df8a1dfa042d942dc1
|
7
|
+
data.tar.gz: ba3cad435e924c140fd528a1cee8bd2e1aa8ccc2431f852d093e01bf7d16e8db21ceecdde3bd3cc53aed7465ffcaa0568f67b0226cbce1f957ced9d35a221ba8
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,29 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.8.2 / 2021-10-11
|
5
|
+
## Fixed
|
6
|
+
* fix issue with blank date causing error for dateranges
|
7
|
+
|
8
|
+
## 5.8.1 / 2021-10-11
|
9
|
+
### Patched
|
10
|
+
* Added fix for failing threat scanner tests (#22)
|
11
|
+
|
12
|
+
## 5.8.0 / 2021-04-19
|
13
|
+
## Added
|
14
|
+
|
15
|
+
* Add ability to disable date reversing in Daterange
|
16
|
+
|
17
|
+
## Fixed
|
18
|
+
* Support Ruby 2.6-3.0.
|
19
|
+
* Fix ruby warnings
|
20
|
+
|
21
|
+
## 5.7.1 / 2021-01-03
|
22
|
+
## Fixed
|
23
|
+
* Postcodeize old Newport postcodes
|
24
|
+
* Bump rake version
|
25
|
+
* Support 2022 public holidays
|
26
|
+
|
4
27
|
## 5.7.0 / 2020-06-30
|
5
28
|
## Added
|
6
29
|
* Handle three char months in Daterange
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# NdrSupport [](https://github.com/publichealthengland/ndr_support/actions?query=workflow%3Atest) [](https://rubygems.org/gems/ndr_support)
|
2
2
|
|
3
3
|
This is the Public Health England (PHE) National Disease Registers (NDR) Support ruby gem, providing:
|
4
4
|
|
data/code_safety.yml
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
---
|
2
2
|
file safety:
|
3
|
+
".github/CODEOWNERS":
|
4
|
+
comments:
|
5
|
+
reviewed_by: ollietulloch
|
6
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
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: ollietulloch
|
14
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
3
15
|
".gitignore":
|
4
16
|
comments:
|
5
17
|
reviewed_by: josh.pencheon
|
@@ -8,16 +20,10 @@ file safety:
|
|
8
20
|
comments:
|
9
21
|
reviewed_by: josh.pencheon
|
10
22
|
safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
|
11
|
-
".travis.yml":
|
12
|
-
comments: 'diff failed; reviewed whole file. Revision c88f5ac8c12fd657bb142144e0d3afaa7f9bc361:
|
13
|
-
Slack notification secret is public/private key encrypted, so not a disclosure
|
14
|
-
risk. As a secondary protection, it''s excluded from the .gem file by ndr_support.gemspec'
|
15
|
-
reviewed_by: josh.pencheon
|
16
|
-
safe_revision: 0cfcfac5ddcd721a67dcd23f04cbf6bc2278b922
|
17
23
|
CHANGELOG.md:
|
18
24
|
comments:
|
19
25
|
reviewed_by: ollietulloch
|
20
|
-
safe_revision:
|
26
|
+
safe_revision: de292b8dd286a0164a67cda49bbbbc8ba75409cc
|
21
27
|
CODE_OF_CONDUCT.md:
|
22
28
|
comments:
|
23
29
|
reviewed_by: timgentry
|
@@ -36,8 +42,8 @@ file safety:
|
|
36
42
|
safe_revision: 90328cca8494539257e192a63b240a91c89f0616
|
37
43
|
README.md:
|
38
44
|
comments:
|
39
|
-
reviewed_by:
|
40
|
-
safe_revision:
|
45
|
+
reviewed_by: ollietulloch
|
46
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
41
47
|
Rakefile:
|
42
48
|
comments:
|
43
49
|
reviewed_by: timgentry
|
@@ -60,8 +66,8 @@ file safety:
|
|
60
66
|
safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
|
61
67
|
lib/ndr_support/concerns/working_days.rb:
|
62
68
|
comments:
|
63
|
-
reviewed_by:
|
64
|
-
safe_revision:
|
69
|
+
reviewed_by: brianshand
|
70
|
+
safe_revision: b72baa322dc58820ccd615a178371c2e5dab113c
|
65
71
|
lib/ndr_support/date_and_time_extensions.rb:
|
66
72
|
comments:
|
67
73
|
reviewed_by: josh.pencheon
|
@@ -69,7 +75,7 @@ file safety:
|
|
69
75
|
lib/ndr_support/daterange.rb:
|
70
76
|
comments:
|
71
77
|
reviewed_by: ollietulloch
|
72
|
-
safe_revision:
|
78
|
+
safe_revision: fc52184297e0a3bcd52b119e2e0add952c8ab7f1
|
73
79
|
lib/ndr_support/hash.rb:
|
74
80
|
comments:
|
75
81
|
reviewed_by: pauleves
|
@@ -80,8 +86,8 @@ file safety:
|
|
80
86
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
81
87
|
lib/ndr_support/integer/julian_date_conversions.rb:
|
82
88
|
comments:
|
83
|
-
reviewed_by:
|
84
|
-
safe_revision:
|
89
|
+
reviewed_by: ollietulloch
|
90
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
85
91
|
lib/ndr_support/integer/rounding.rb:
|
86
92
|
comments:
|
87
93
|
reviewed_by: josh.pencheon
|
@@ -100,12 +106,12 @@ file safety:
|
|
100
106
|
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
101
107
|
lib/ndr_support/ourdate.rb:
|
102
108
|
comments:
|
103
|
-
reviewed_by:
|
104
|
-
safe_revision:
|
109
|
+
reviewed_by: ollietulloch
|
110
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
105
111
|
lib/ndr_support/ourtime.rb:
|
106
112
|
comments:
|
107
|
-
reviewed_by:
|
108
|
-
safe_revision:
|
113
|
+
reviewed_by: ollietulloch
|
114
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
109
115
|
lib/ndr_support/password.rb:
|
110
116
|
comments: with input from brian.shand
|
111
117
|
reviewed_by: josh.pencheon
|
@@ -124,44 +130,44 @@ file safety:
|
|
124
130
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
125
131
|
lib/ndr_support/safe_path.rb:
|
126
132
|
comments:
|
127
|
-
reviewed_by:
|
128
|
-
safe_revision:
|
133
|
+
reviewed_by: ollietulloch
|
134
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
129
135
|
lib/ndr_support/string/cleaning.rb:
|
130
136
|
comments:
|
131
|
-
reviewed_by:
|
132
|
-
safe_revision:
|
137
|
+
reviewed_by: brianshand
|
138
|
+
safe_revision: b7b033ad9773cc9037c408a7763b113d31cbf191
|
133
139
|
lib/ndr_support/string/conversions.rb:
|
134
140
|
comments:
|
135
141
|
reviewed_by: ollietulloch
|
136
|
-
safe_revision:
|
142
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
137
143
|
lib/ndr_support/tasks.rb:
|
138
144
|
comments:
|
139
145
|
reviewed_by: timgentry
|
140
146
|
safe_revision: 62337584a32e5c30c2e9af7cd998a9df684885cc
|
141
147
|
lib/ndr_support/threat_scanner.rb:
|
142
148
|
comments:
|
143
|
-
reviewed_by:
|
144
|
-
safe_revision:
|
149
|
+
reviewed_by: brianshand
|
150
|
+
safe_revision: befa1d4f27448d5be4e133f442c2b5fbac7d8f25
|
145
151
|
lib/ndr_support/utf8_encoding.rb:
|
146
152
|
comments:
|
147
153
|
reviewed_by: josh.pencheon
|
148
154
|
safe_revision: 8e024a4bacfd36e172aad4b800f1960faae0b4b6
|
149
155
|
lib/ndr_support/utf8_encoding/control_characters.rb:
|
150
156
|
comments:
|
151
|
-
reviewed_by:
|
152
|
-
safe_revision:
|
157
|
+
reviewed_by: ollietulloch
|
158
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
153
159
|
lib/ndr_support/utf8_encoding/force_binary.rb:
|
154
160
|
comments:
|
155
|
-
reviewed_by:
|
156
|
-
safe_revision:
|
161
|
+
reviewed_by: ollietulloch
|
162
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
157
163
|
lib/ndr_support/utf8_encoding/object_support.rb:
|
158
164
|
comments:
|
159
|
-
reviewed_by:
|
160
|
-
safe_revision:
|
165
|
+
reviewed_by: ollietulloch
|
166
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
161
167
|
lib/ndr_support/version.rb:
|
162
168
|
comments:
|
163
169
|
reviewed_by: ollietulloch
|
164
|
-
safe_revision:
|
170
|
+
safe_revision: de292b8dd286a0164a67cda49bbbbc8ba75409cc
|
165
171
|
lib/ndr_support/working_days.rb:
|
166
172
|
comments:
|
167
173
|
reviewed_by: josh.pencheon
|
@@ -172,8 +178,8 @@ file safety:
|
|
172
178
|
safe_revision: 29595e6431587ff9b7db6e3ad3abbb3577bff99c
|
173
179
|
ndr_support.gemspec:
|
174
180
|
comments:
|
175
|
-
reviewed_by:
|
176
|
-
safe_revision:
|
181
|
+
reviewed_by: ollietulloch
|
182
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
177
183
|
test/array_test.rb:
|
178
184
|
comments:
|
179
185
|
reviewed_by: timgentry
|
@@ -185,7 +191,7 @@ file safety:
|
|
185
191
|
test/daterange_test.rb:
|
186
192
|
comments:
|
187
193
|
reviewed_by: ollietulloch
|
188
|
-
safe_revision:
|
194
|
+
safe_revision: ccca1dc67e3742efb154e01e01243e7b38180936
|
189
195
|
test/hash_test.rb:
|
190
196
|
comments:
|
191
197
|
reviewed_by: timgentry
|
@@ -240,20 +246,20 @@ file safety:
|
|
240
246
|
safe_revision: b562d0c15ff1b1d565522a47e6bae47ea09706f0
|
241
247
|
test/string/cleaning_test.rb:
|
242
248
|
comments:
|
243
|
-
reviewed_by:
|
244
|
-
safe_revision:
|
249
|
+
reviewed_by: brianshand
|
250
|
+
safe_revision: b7b033ad9773cc9037c408a7763b113d31cbf191
|
245
251
|
test/string/conversions_test.rb:
|
246
252
|
comments:
|
247
253
|
reviewed_by: ollietulloch
|
248
|
-
safe_revision:
|
254
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
249
255
|
test/test_helper.rb:
|
250
256
|
comments:
|
251
257
|
reviewed_by: josh.pencheon
|
252
258
|
safe_revision: 34ae80f2952f0bfd18688541862774cbaaa6c5f5
|
253
259
|
test/threat_scanner_test.rb:
|
254
260
|
comments:
|
255
|
-
reviewed_by:
|
256
|
-
safe_revision:
|
261
|
+
reviewed_by: ollietulloch
|
262
|
+
safe_revision: fbb6ef9804040aa2e38257d9f5c487bde18a490d
|
257
263
|
test/utf8_encoding/control_characters_test.rb:
|
258
264
|
comments:
|
259
265
|
reviewed_by: timgentry
|
@@ -97,6 +97,16 @@ module WorkingDays
|
|
97
97
|
'2021-08-30', # Monday - Summer bank holiday
|
98
98
|
'2021-12-27', # Monday - Christmas Day
|
99
99
|
'2021-12-28', # Tuesday - Boxing Day
|
100
|
+
# 2022
|
101
|
+
'2022-01-03', # Monday - New Year’s Day (substitute day)
|
102
|
+
'2022-04-15', # Friday - Good Friday
|
103
|
+
'2022-04-18', # Monday - Easter Monday
|
104
|
+
'2022-05-02', # Monday - Early May bank holiday
|
105
|
+
'2022-06-02', # Thursday - Spring bank holiday
|
106
|
+
'2022-06-03', # Friday - Platinum Jubilee bank holiday
|
107
|
+
'2022-08-29', # Monday - Summer bank holiday
|
108
|
+
'2022-12-26', # Monday - Boxing Day
|
109
|
+
'2022-12-27', # Tuesday - Christmas Day (substitute day)
|
100
110
|
].map { |str| Date.parse(str) }
|
101
111
|
|
102
112
|
def self.check_lookup
|
@@ -8,6 +8,9 @@ class Daterange
|
|
8
8
|
|
9
9
|
OKYEARS = 1880..2030
|
10
10
|
|
11
|
+
# Raised when dates are not supplied in the correct order if do_not_flip_dates is passed as true:
|
12
|
+
class WrongDateOrderError < StandardError; end
|
13
|
+
|
11
14
|
def self.extract(dates_string)
|
12
15
|
dates_string.to_s.split(',').map { |str| new(str) }
|
13
16
|
end
|
@@ -17,15 +20,15 @@ class Daterange
|
|
17
20
|
new(ranges.map(&:date1).compact.min, ranges.map(&:date2).compact.max)
|
18
21
|
end
|
19
22
|
|
20
|
-
def initialize(x1 = nil, x2 = nil)
|
23
|
+
def initialize(x1 = nil, x2 = nil, do_not_sort_dates: false)
|
21
24
|
x1 = x1.to_datetime if x1.is_a?(Date) || x1.is_a?(Time)
|
22
25
|
x2 = x2.to_datetime if x2.is_a?(Date) || x2.is_a?(Time)
|
23
26
|
|
24
27
|
if x1.is_a?(DateTime) && x2.is_a?(DateTime)
|
25
|
-
@date1 = [x1, x2].min
|
26
|
-
@date2 = [x1, x2].max
|
28
|
+
@date1 = do_not_sort_dates ? x1 : [x1, x2].min
|
29
|
+
@date2 = do_not_sort_dates ? x2 : [x1, x2].max
|
27
30
|
@source = nil
|
28
|
-
elsif x1.is_a?(Daterange) && x2.nil?
|
31
|
+
elsif x1.is_a?(Daterange) && x2.nil? # Patient model line 645
|
29
32
|
@date1 = x1.date1
|
30
33
|
@date2 = x1.date2
|
31
34
|
@source = x1.source
|
@@ -34,15 +37,24 @@ class Daterange
|
|
34
37
|
@date2 = x1
|
35
38
|
@source = nil
|
36
39
|
elsif x1.is_a?(String) && x2.nil?
|
37
|
-
self.source
|
40
|
+
self.send(:source=, x1, do_not_sort_dates)
|
38
41
|
else
|
39
42
|
@date1 = nil
|
40
43
|
@date2 = nil
|
41
44
|
@source = nil
|
42
45
|
end
|
46
|
+
raise WrongDateOrderError, 'Invalid date range order' if wrong_date_order?(do_not_sort_dates)
|
47
|
+
|
43
48
|
self.freeze
|
44
49
|
end
|
45
50
|
|
51
|
+
def wrong_date_order?(do_not_sort_dates)
|
52
|
+
return false unless do_not_sort_dates
|
53
|
+
return false unless @date1.present? && @date2.present?
|
54
|
+
|
55
|
+
@date1 > @date2
|
56
|
+
end
|
57
|
+
|
46
58
|
# If we have a valid date range, return a string representation of it
|
47
59
|
# TODO: possibly add support for to_s(format) e.g. to_s(:short)
|
48
60
|
def to_s
|
@@ -137,22 +149,23 @@ class Daterange
|
|
137
149
|
# +s+ consists of one or more dates separated with spaces.
|
138
150
|
# Each date can be in various formats, e.g. d/m/yyyy, ddmmyyyy, yyyy-mm-dd, dd-mon-yyyy
|
139
151
|
# Each date can omit days or months, e.g. yyyy, dd/yyyy, yyyy-mm, mon-yyyy
|
140
|
-
def source=(s)
|
152
|
+
def source=(s, do_not_sort_dates)
|
141
153
|
@source = s
|
142
154
|
ss = s.upcase.sub(/TO/, ' ') # accept default _to_s format
|
143
|
-
if ss =~
|
155
|
+
if ss =~ %r{[^A-Z0-9\-/\. ]}i # only allow letters, digits, hyphen, slash, dot, space
|
144
156
|
@date1 = @date2 = nil
|
145
157
|
else
|
146
158
|
da = [] # temporary array of arrays of dates
|
147
|
-
ss.split
|
159
|
+
ss.split.each do |vaguedate|
|
148
160
|
da << str_to_date_array(vaguedate)
|
149
161
|
end
|
150
162
|
da.flatten!
|
151
163
|
if da.include?(nil)
|
152
|
-
@date1 = @date2 =
|
164
|
+
@date1 = @date2 = nil
|
153
165
|
else
|
154
|
-
da.sort!
|
155
|
-
@date1
|
166
|
+
da.sort! unless do_not_sort_dates
|
167
|
+
@date1 = da.first
|
168
|
+
@date2 = da.last
|
156
169
|
end
|
157
170
|
end
|
158
171
|
end
|
data/lib/ndr_support/ourdate.rb
CHANGED
@@ -31,6 +31,8 @@ class Ourdate
|
|
31
31
|
# with strings arguments only after the 1970 epoch; before, it returns nil.
|
32
32
|
#++
|
33
33
|
def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
|
34
|
+
return nil if year.nil?
|
35
|
+
|
34
36
|
if ActiveRecord::Base.default_timezone == :local
|
35
37
|
# Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
|
36
38
|
# Behave like oracle_adapter.rb
|
@@ -72,8 +74,8 @@ class Ourdate
|
|
72
74
|
end
|
73
75
|
|
74
76
|
def empty?
|
75
|
-
# An unspecified date will be empty. A valid
|
76
|
-
@thedate.nil?
|
77
|
+
# An unspecified date will be empty. A valid date will not.
|
78
|
+
@thedate.nil?
|
77
79
|
end
|
78
80
|
|
79
81
|
def source=(s)
|
data/lib/ndr_support/ourtime.rb
CHANGED
@@ -84,7 +84,7 @@ class String
|
|
84
84
|
|
85
85
|
# Try to convert the string value into a date.
|
86
86
|
# If given a pattern, use it to parse date, otherwise use default setting to parse it
|
87
|
-
|
87
|
+
redefine_method :to_date do |pattern = nil|
|
88
88
|
return nil if blank?
|
89
89
|
|
90
90
|
pattern = '%d%m%Y' if 'ddmmyyyy' == pattern
|
data/lib/ndr_support/version.rb
CHANGED
data/ndr_support.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'ndr_support/version'
|
4
4
|
|
@@ -13,9 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.license = 'MIT'
|
14
14
|
|
15
15
|
# Exclude older versions of this gem from the package.
|
16
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |s| s =~
|
17
|
-
# SECURE BNS 2018-08-06: Minimise sharing of (public-key encrypted) slack secrets in .travis.yml
|
18
|
-
spec.files -= %w[.travis.yml] # Not needed in the gem
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |s| s =~ %r{^(\.github|pkg/)} }
|
19
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
19
|
spec.require_paths = ['lib']
|
@@ -24,9 +22,9 @@ Gem::Specification.new do |spec|
|
|
24
22
|
spec.add_dependency 'activesupport', '>= 5.2.0', '< 7'
|
25
23
|
|
26
24
|
spec.add_development_dependency 'bundler'
|
27
|
-
spec.add_development_dependency 'rake', '
|
25
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
28
26
|
|
29
|
-
spec.required_ruby_version = '>= 2.
|
27
|
+
spec.required_ruby_version = '>= 2.6.0'
|
30
28
|
|
31
29
|
# Avoid std-lib minitest (which has different namespace)
|
32
30
|
spec.add_development_dependency 'minitest', '>= 5.0.0'
|
data/test/daterange_test.rb
CHANGED
@@ -24,19 +24,53 @@ class DaterangeTest < Minitest::Test
|
|
24
24
|
# assert_match(/\d\d\.\d\d\.\d\d\d\d to \d\d.\d\d.\d\d\d\d/, dr.to_s)
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
28
|
-
d =
|
29
|
-
dr = Daterange.new
|
30
|
-
dr2 = Daterange.new
|
27
|
+
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_false
|
28
|
+
d = Time.zone.today
|
29
|
+
dr = Daterange.new(d, d + 1)
|
30
|
+
dr2 = Daterange.new(d + 1, d)
|
31
31
|
assert_equal(dr.to_s, dr2.to_s)
|
32
32
|
end
|
33
33
|
|
34
|
+
def test_blank_does_not_trigger_error_and_returns_nil_in_dates
|
35
|
+
dr = Daterange.new('', do_not_sort_dates: true)
|
36
|
+
assert_nil dr.date1
|
37
|
+
assert_nil dr.date2
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_true
|
41
|
+
d = Time.zone.today
|
42
|
+
Daterange.new(d, d + 1, do_not_sort_dates: true)
|
43
|
+
assert_raises(Daterange::WrongDateOrderError) do
|
44
|
+
Daterange.new(d + 1, d, do_not_sort_dates: true)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_string_dates_in_reverse_order_with_do_not_sort_dates_false
|
49
|
+
dr = Daterange.new('01/01/2019 to 01/01/2020')
|
50
|
+
dr2 = Daterange.new('01/01/2020 to 01/01/2019')
|
51
|
+
assert_equal(dr.to_s, dr2.to_s)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_string_dates_in_reverse_order_with_do_not_sort_dates_true
|
55
|
+
Daterange.new('01/01/2019 to 01/01/2020', do_not_sort_dates: true)
|
56
|
+
assert_raises(Daterange::WrongDateOrderError) do
|
57
|
+
Daterange.new('01/01/2020 to 01/01/2019', do_not_sort_dates: true)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
34
61
|
def test_illegal_strings
|
35
62
|
dr = Daterange.new('01/o1/2000')
|
36
63
|
assert_equal '', dr.to_s
|
37
64
|
assert_nil dr.date1
|
38
65
|
assert_nil dr.date2
|
39
|
-
refute dr.empty?
|
66
|
+
refute dr.empty? # Illegal dates do not count as empty / blank,
|
67
|
+
refute_nil dr.source # but the illegal string is preserved
|
68
|
+
|
69
|
+
dr = Daterange.new('01_01_2000')
|
70
|
+
assert_equal '', dr.to_s
|
71
|
+
assert_nil dr.date1
|
72
|
+
assert_nil dr.date2
|
73
|
+
refute dr.empty? # Illegal dates do not count as empty / blank,
|
40
74
|
refute_nil dr.source # but the illegal string is preserved
|
41
75
|
end
|
42
76
|
|
@@ -23,6 +23,9 @@ class String
|
|
23
23
|
assert_equal 'AA9 9AA', 'AA9 9AA'.postcodeize(:db)
|
24
24
|
assert_equal 'AA999AA', 'AA99 9AA'.postcodeize(:db)
|
25
25
|
assert_equal 'AA9A9AA', 'AA9A 9AA'.postcodeize(:db)
|
26
|
+
# Old Newport postcodes until end 1984
|
27
|
+
assert_equal 'NPT 1AA' , 'NPT 1AA'.postcodeize(:db)
|
28
|
+
assert_equal 'NPT 1AA' , 'NPT 1AA'.postcodeize(:db)
|
26
29
|
# Examples of legacy postcodes, that should be unchanged
|
27
30
|
assert_equal 'IP222', 'IP222'.postcodeize(:db)
|
28
31
|
assert_equal 'IP222E', 'IP222E'.postcodeize(:db)
|
@@ -357,9 +357,9 @@ class String::ConversionsTest < Minitest::Test
|
|
357
357
|
end
|
358
358
|
|
359
359
|
def assert_ymd(ymd, date)
|
360
|
-
assert_equal ymd
|
361
|
-
assert_equal ymd
|
362
|
-
assert_equal ymd
|
360
|
+
assert_equal ymd[0], date.year, 'years were not equal'
|
361
|
+
assert_equal ymd[1], date.month, 'months were not equal'
|
362
|
+
assert_equal ymd[2], date.day, 'days were not equal'
|
363
363
|
end
|
364
364
|
|
365
365
|
def assert_ymd_parsed(ymd, parse_results)
|
data/test/threat_scanner_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -68,16 +68,16 @@ dependencies:
|
|
68
68
|
name: rake
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - "
|
71
|
+
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
73
|
+
version: 12.3.3
|
74
74
|
type: :development
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- - "
|
78
|
+
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
80
|
+
version: 12.3.3
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: minitest
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,7 +309,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
309
309
|
requirements:
|
310
310
|
- - ">="
|
311
311
|
- !ruby/object:Gem::Version
|
312
|
-
version: 2.
|
312
|
+
version: 2.6.0
|
313
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
315
|
- - ">="
|