ndr_support 5.8.0 → 5.8.4

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 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