ndr_support 5.7.0 → 5.8.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Build Status](https://
|
1
|
+
# NdrSupport [![Build Status](https://github.com/publichealthengland/ndr_support/workflows/Test/badge.svg)](https://github.com/publichealthengland/ndr_support/actions?query=workflow%3Atest) [![Gem Version](https://badge.fury.io/rb/ndr_support.svg)](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
|
- - ">="
|