ndr_support 5.8.0 → 5.8.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 902f81bfb91abe5145aebc693e0f200b621db63183963e6c1bc0d2c7ef783c7e
4
- data.tar.gz: 8bb91d0cfa4e64493330d9fa1eeb2765452e45547d751df43daf954da5a06ddd
3
+ metadata.gz: 34884f8080512729d26a5b99ee45bcde3abf4761557539f5d2dd3c7e29744e8f
4
+ data.tar.gz: 6e82d6aba23372b53d809f3ab245a507100874cb41f000897a488c7cab197287
5
5
  SHA512:
6
- metadata.gz: b006ab6c6ea53f6ce5b47dc38fd290d1b9679995eacea4cbd269477e79e06bc2a1a752b273d707dce3a127e8c605b08fae8dfa6c1a606bb272f290521f66d971
7
- data.tar.gz: 193a182ca039ba2113d1701c75511eb00bd8c4ce3e52e5797c7a6846c3963fdca392b3374faa79b9fdf78e25ad3514f87d1bbc2bc6545f68092f698b7ab93a33
6
+ metadata.gz: 3cc130d188abf756e32c59ad3f077bc696b17c0bbbb233e1c9f0f60f8cc8c111a719a605eea7be216af4ac91100335ca324cef32067b550c420b4440e41b37c8
7
+ data.tar.gz: 34dd278940652be4ac9b840c47a4bb80c1ae6379eb46f3d4c700b178f7ccd02a448d301bf79edbaeefa0866a0ef98b04b58f3dddd922540960cc233803f5083a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,22 @@
1
1
  ## [Unreleased]
2
2
  *no unreleased changes*
3
3
 
4
+ ## 5.8.4 / 2021-12-27
5
+ ## Fixed
6
+ * Support 2023 public holidays
7
+
8
+ ## 5.8.3 / 2021-11-25
9
+ ## Fixed
10
+ * remove circular dependencies between Ourdate and Daterange
11
+
12
+ ## 5.8.2 / 2021-10-11
13
+ ## Fixed
14
+ * fix issue with blank date causing error for dateranges
15
+
16
+ ## 5.8.1 / 2021-10-11
17
+ ### Patched
18
+ * Added fix for failing threat scanner tests (#22)
19
+
4
20
  ## 5.8.0 / 2021-04-19
5
21
  ## Added
6
22
 
data/code_safety.yml CHANGED
@@ -22,8 +22,8 @@ file safety:
22
22
  safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
23
23
  CHANGELOG.md:
24
24
  comments:
25
- reviewed_by: ollietulloch
26
- safe_revision: b0dc20ab24516ac5c3ecb6c7078b56a20dd2fbd5
25
+ reviewed_by: brian.shand
26
+ safe_revision: 3c246b08d80a424d160914a6597197b8925826ec
27
27
  CODE_OF_CONDUCT.md:
28
28
  comments:
29
29
  reviewed_by: timgentry
@@ -66,16 +66,16 @@ file safety:
66
66
  safe_revision: 4a4ed24d2cfe7e1736baadf4cf6e0fece6823be1
67
67
  lib/ndr_support/concerns/working_days.rb:
68
68
  comments:
69
- reviewed_by: brianshand
70
- safe_revision: b72baa322dc58820ccd615a178371c2e5dab113c
69
+ reviewed_by: brian.shand
70
+ safe_revision: 42b82bdc466503800c021263899cdbbe444b78b0
71
71
  lib/ndr_support/date_and_time_extensions.rb:
72
72
  comments:
73
73
  reviewed_by: josh.pencheon
74
74
  safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
75
75
  lib/ndr_support/daterange.rb:
76
76
  comments:
77
- reviewed_by: ollietulloch
78
- safe_revision: 7b9c9525a5d9d319ddec75d5106c85a53f77e3f4
77
+ reviewed_by: brian.shand
78
+ safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
79
79
  lib/ndr_support/hash.rb:
80
80
  comments:
81
81
  reviewed_by: pauleves
@@ -84,10 +84,6 @@ file safety:
84
84
  comments:
85
85
  reviewed_by: josh.pencheon
86
86
  safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
87
- lib/ndr_support/integer/julian_date_conversions.rb:
88
- comments:
89
- reviewed_by: ollietulloch
90
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
91
87
  lib/ndr_support/integer/rounding.rb:
92
88
  comments:
93
89
  reviewed_by: josh.pencheon
@@ -106,8 +102,12 @@ file safety:
106
102
  safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
107
103
  lib/ndr_support/ourdate.rb:
108
104
  comments:
109
- reviewed_by: ollietulloch
110
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
105
+ reviewed_by: brian.shand
106
+ safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
107
+ lib/ndr_support/ourdate/build_datetime.rb:
108
+ comments:
109
+ reviewed_by: brian.shand
110
+ safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
111
111
  lib/ndr_support/ourtime.rb:
112
112
  comments:
113
113
  reviewed_by: ollietulloch
@@ -166,8 +166,8 @@ file safety:
166
166
  safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
167
167
  lib/ndr_support/version.rb:
168
168
  comments:
169
- reviewed_by: ollietulloch
170
- safe_revision: b0dc20ab24516ac5c3ecb6c7078b56a20dd2fbd5
169
+ reviewed_by: brian.shand
170
+ safe_revision: 3c246b08d80a424d160914a6597197b8925826ec
171
171
  lib/ndr_support/working_days.rb:
172
172
  comments:
173
173
  reviewed_by: josh.pencheon
@@ -191,7 +191,7 @@ file safety:
191
191
  test/daterange_test.rb:
192
192
  comments:
193
193
  reviewed_by: ollietulloch
194
- safe_revision: 7b9c9525a5d9d319ddec75d5106c85a53f77e3f4
194
+ safe_revision: ccca1dc67e3742efb154e01e01243e7b38180936
195
195
  test/hash_test.rb:
196
196
  comments:
197
197
  reviewed_by: timgentry
@@ -258,8 +258,8 @@ file safety:
258
258
  safe_revision: 34ae80f2952f0bfd18688541862774cbaaa6c5f5
259
259
  test/threat_scanner_test.rb:
260
260
  comments:
261
- reviewed_by: josh.pencheon
262
- safe_revision: ed8ff421cc9353456af13a37049a07ce2545aac1
261
+ reviewed_by: ollietulloch
262
+ safe_revision: fbb6ef9804040aa2e38257d9f5c487bde18a490d
263
263
  test/utf8_encoding/control_characters_test.rb:
264
264
  comments:
265
265
  reviewed_by: timgentry
@@ -107,6 +107,15 @@ module WorkingDays
107
107
  '2022-08-29', # Monday - Summer bank holiday
108
108
  '2022-12-26', # Monday - Boxing Day
109
109
  '2022-12-27', # Tuesday - Christmas Day (substitute day)
110
+ # 2023
111
+ '2023-01-02', # Monday - New Year’s Day (substitute day)
112
+ '2023-04-07', # Friday - Good Friday
113
+ '2023-04-10', # Monday - Easter Monday
114
+ '2023-05-01', # Monday - Early May bank holiday
115
+ '2023-05-29', # Monday - Spring bank holiday
116
+ '2023-08-28', # Monday - Summer bank holiday
117
+ '2023-12-25', # Monday - Boxing Day
118
+ '2023-12-26', # Tuesday - Christmas Day (substitute day)
110
119
  ].map { |str| Date.parse(str) }
111
120
 
112
121
  def self.check_lookup
@@ -1,6 +1,6 @@
1
1
  require 'active_support/core_ext/enumerable'
2
2
  require 'active_support/time'
3
- require 'ndr_support/integer/julian_date_conversions'
3
+ require 'ndr_support/ourdate/build_datetime'
4
4
 
5
5
  # Our "vague date" class, which can represent a single date or a date range.
6
6
  class Daterange
@@ -43,11 +43,18 @@ class Daterange
43
43
  @date2 = nil
44
44
  @source = nil
45
45
  end
46
- raise WrongDateOrderError, 'Invalid date range order' if do_not_sort_dates && @date1 > @date2
46
+ raise WrongDateOrderError, 'Invalid date range order' if wrong_date_order?(do_not_sort_dates)
47
47
 
48
48
  self.freeze
49
49
  end
50
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
+
51
58
  # If we have a valid date range, return a string representation of it
52
59
  # TODO: possibly add support for to_s(format) e.g. to_s(:short)
53
60
  def to_s
@@ -181,7 +188,10 @@ class Daterange
181
188
  j1 = j2 = Date.new(parts[0], parts[1], parts[2]).jd
182
189
  end
183
190
 
184
- [j1.jd_to_datetime, j2.jd_to_datetime]
191
+ [j1, j2].collect do |jd|
192
+ date = Date.jd(jd) # Julian date number to Ruby Date
193
+ Ourdate.build_datetime(date.year, date.month, date.day)
194
+ end
185
195
  rescue
186
196
  nil
187
197
  end
@@ -0,0 +1,36 @@
1
+ require 'active_record'
2
+ require 'active_support/time'
3
+
4
+ class Ourdate
5
+ # Construct a daylight saving time safe datetime, with arguments
6
+ #--
7
+ # FIXME: Note that the arguments should be numbers, not strings -- it works
8
+ # with strings arguments only after the 1970 epoch; before, it returns nil.
9
+ #++
10
+ def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
11
+ return nil if year.nil?
12
+
13
+ if ActiveRecord::Base.default_timezone == :local
14
+ # Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
15
+ # Behave like oracle_adapter.rb
16
+ seconds = sec + Rational(usec, 10**6)
17
+ time_array = [year, month, day, hour, min, seconds]
18
+ begin
19
+ #--
20
+ # TODO: Fails unit tests unless we .to_datetime here
21
+ # but the risk is we lose the usec component unnecesssarily.
22
+ # Investigate removing .to_datetime below.
23
+ #++
24
+ Time.send(ActiveRecord::Base.default_timezone, *time_array).to_datetime
25
+ rescue
26
+ zone_offset = ActiveRecord::Base.default_timezone == :local ? DateTime.now.offset : 0
27
+ # Append zero calendar reform start to account for dates skipped by calendar reform
28
+ DateTime.new(*time_array[0..5] << zone_offset << 0) rescue nil
29
+ end
30
+ else
31
+ # Only supports fake GMT time -- needs improvement
32
+ # Maybe use Time.zone.local or Time.local_time(year, month, day)
33
+ Time.utc(year, month, day, hour, min, sec, usec).to_datetime
34
+ end
35
+ end
36
+ end
@@ -1,5 +1,6 @@
1
1
  require 'active_record'
2
2
  require 'active_support/time'
3
+ require 'ndr_support/ourdate/build_datetime'
3
4
  require 'ndr_support/date_and_time_extensions'
4
5
  require 'ndr_support/daterange'
5
6
 
@@ -25,38 +26,6 @@ class Ourdate
25
26
  end
26
27
  end
27
28
 
28
- # Construct a daylight saving time safe datetime, with arguments
29
- #--
30
- # FIXME: Note that the arguments should be numbers, not strings -- it works
31
- # with strings arguments only after the 1970 epoch; before, it returns nil.
32
- #++
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
-
36
- if ActiveRecord::Base.default_timezone == :local
37
- # Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
38
- # Behave like oracle_adapter.rb
39
- seconds = sec + Rational(usec, 10**6)
40
- time_array = [year, month, day, hour, min, seconds]
41
- begin
42
- #--
43
- # TODO: Fails unit tests unless we .to_datetime here
44
- # but the risk is we lose the usec component unnecesssarily.
45
- # Investigate removing .to_datetime below.
46
- #++
47
- Time.send(ActiveRecord::Base.default_timezone, *time_array).to_datetime
48
- rescue
49
- zone_offset = ActiveRecord::Base.default_timezone == :local ? DateTime.now.offset : 0
50
- # Append zero calendar reform start to account for dates skipped by calendar reform
51
- DateTime.new(*time_array[0..5] << zone_offset << 0) rescue nil
52
- end
53
- else
54
- # Only supports fake GMT time -- needs improvement
55
- # Maybe use Time.zone.local or Time.local_time(year, month, day)
56
- Time.utc(year, month, day, hour, min, sec, usec).to_datetime
57
- end
58
- end
59
-
60
29
  def initialize(x = nil)
61
30
  if x.is_a?(Date)
62
31
  @thedate = x
@@ -3,5 +3,5 @@
3
3
  # This defines the NdrSupport version. If you change it, rebuild and commit the gem.
4
4
  # Use "rake build" to build the gem, see rake -T for all bundler rake tasks.
5
5
  module NdrSupport
6
- VERSION = '5.8.0'
6
+ VERSION = '5.8.4'
7
7
  end
@@ -31,6 +31,12 @@ class DaterangeTest < Minitest::Test
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
+
34
40
  def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_true
35
41
  d = Time.zone.today
36
42
  Daterange.new(d, d + 1, do_not_sort_dates: true)
@@ -8,6 +8,8 @@ class ThreatScannerTest < Minitest::Test
8
8
 
9
9
  ThreatScanner.stubs(installed?: true)
10
10
  ThreatScanner.any_instance.stubs(:`)
11
+
12
+ `pwd` # Ensure that $CHILD_STATUS is not nil, even if we never run any child processes
11
13
  end
12
14
 
13
15
  def teardown
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.8.0
4
+ version: 5.8.4
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: 2021-04-19 00:00:00.000000000 Z
11
+ date: 2021-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -249,12 +249,12 @@ files:
249
249
  - lib/ndr_support/daterange.rb
250
250
  - lib/ndr_support/hash.rb
251
251
  - lib/ndr_support/integer/calculations.rb
252
- - lib/ndr_support/integer/julian_date_conversions.rb
253
252
  - lib/ndr_support/integer/rounding.rb
254
253
  - lib/ndr_support/integer/working_days.rb
255
254
  - lib/ndr_support/nil.rb
256
255
  - lib/ndr_support/obfuscator.rb
257
256
  - lib/ndr_support/ourdate.rb
257
+ - lib/ndr_support/ourdate/build_datetime.rb
258
258
  - lib/ndr_support/ourtime.rb
259
259
  - lib/ndr_support/password.rb
260
260
  - lib/ndr_support/password/constants.rb
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
316
  - !ruby/object:Gem::Version
317
317
  version: '0'
318
318
  requirements: []
319
- rubygems_version: 3.0.3
319
+ rubygems_version: 3.1.6
320
320
  signing_key:
321
321
  specification_version: 4
322
322
  summary: NDR Support library
@@ -1,12 +0,0 @@
1
- # Extend Integer for use in our Daterange class
2
- class Integer
3
- # Julian date number to Ruby Date
4
- def jd_to_date
5
- Date.jd(self)
6
- end
7
-
8
- def jd_to_datetime
9
- date = jd_to_date
10
- Ourdate.build_datetime(date.year, date.month, date.day)
11
- end
12
- end