ndr_support 5.9.2 → 5.9.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: b92349bb86b84b6c5cc6c836613fadec463e824e87e6ccbe02fc07dd3f7049b5
4
- data.tar.gz: eb4312735ea0f25e517ec7b3d6676ab1b40c9ee64e36044b7b17f518cef0f592
3
+ metadata.gz: 4ca42961473b3e0f614709e4506f7f37e44b14e4f212db71e59e5386f7f4b852
4
+ data.tar.gz: 3d213bdfe03991c73f7bffe451208fec727d52337cdaf659e1a815d503962929
5
5
  SHA512:
6
- metadata.gz: 3d1edb198422ec9e566680943988f090762bd3fe2f254cb9237631a54ed0feb2e4dda45801574319e745487a11fee6f1540a5c7b5562c516d4b9e7a9004266cc
7
- data.tar.gz: d2dfa5bc36ece2a23b50d2406563604f6f5989a0706d7981382f9d6738e46cb89bfe3a4dfb7e1e0ab50b18971d8b07b2241d76e59bcf01f818da646898decf12
6
+ metadata.gz: cc033dac0c4eb88222a0b75630fad6505902f680b153ea2a8024cf5fa1ba8823d935e0f75f1384f9e716bfbe6265ba980ea3fb892a263f506737bb146356eff3
7
+ data.tar.gz: 7930201e594ad93153ff833e76e7ed5ced7eb3c35f4c57a88404a36e5e1e64b36bf79c2f764449bccc5eb5a139a03a9edf9b7f427efd4a78e97697f68b7e3096
data/.rubocop.yml CHANGED
@@ -1 +1 @@
1
- inherit_from: 'https://raw.githubusercontent.com/PublicHealthEngland/ndr_dev_support/master/.rubocop.yml'
1
+ require: ndr_dev_support
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  ## [Unreleased]
2
2
  * No unreleased changes
3
3
 
4
+ ## 5.9.4 / 2023-07-13
5
+ ### Added
6
+ * Support Ruby 3.2. Drop support for Ruby 2.7, Rails 6.0
7
+
8
+ ## 5.9.3 / 2022-12-02
9
+ ## Fixed
10
+ * Support Rails 7.0
11
+
12
+ ## Changed
13
+ * Drop support for Rails 5.2
14
+
4
15
  ## 5.9.2 / 2022-11-17
5
16
  ## Fixed
6
17
  * Add extra 2023 Bank Holiday, and 2024 and 2025 Bank Holidays
data/code_safety.yml CHANGED
@@ -11,19 +11,19 @@ file safety:
11
11
  ".github/workflows/test.yml":
12
12
  comments:
13
13
  reviewed_by: brian.shand
14
- safe_revision: e91fab5ac8474b001ca3805c6cce8eefa6b49f2d
14
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
15
15
  ".gitignore":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
18
18
  safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
19
19
  ".rubocop.yml":
20
20
  comments:
21
- reviewed_by: josh.pencheon
22
- safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
21
+ reviewed_by: brian.shand
22
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
23
23
  CHANGELOG.md:
24
24
  comments:
25
25
  reviewed_by: brian.shand
26
- safe_revision: bac214f4c93d8753268825408fc560171fac91c0
26
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
27
27
  CODE_OF_CONDUCT.md:
28
28
  comments:
29
29
  reviewed_by: timgentry
@@ -52,10 +52,6 @@ file safety:
52
52
  comments:
53
53
  reviewed_by: josh.pencheon
54
54
  safe_revision: 8a6bedae77d33d0db1b67eaed7972870b6afc993
55
- gemfiles/Gemfile.rails60:
56
- comments:
57
- reviewed_by: brian.shand
58
- safe_revision: 16254a4332aab074a27c8e13859dc4712e707122
59
55
  gemfiles/Gemfile.rails61:
60
56
  comments:
61
57
  reviewed_by: brian.shand
@@ -78,12 +74,12 @@ file safety:
78
74
  safe_revision: bac214f4c93d8753268825408fc560171fac91c0
79
75
  lib/ndr_support/date_and_time_extensions.rb:
80
76
  comments:
81
- reviewed_by: josh.pencheon
82
- safe_revision: c1158eccb843b637b4dd82815dc7c081f12b93e4
77
+ reviewed_by: brian.shand
78
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
83
79
  lib/ndr_support/daterange.rb:
84
80
  comments:
85
81
  reviewed_by: brian.shand
86
- safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
82
+ safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
87
83
  lib/ndr_support/hash.rb:
88
84
  comments:
89
85
  reviewed_by: pauleves
@@ -111,15 +107,15 @@ file safety:
111
107
  lib/ndr_support/ourdate.rb:
112
108
  comments:
113
109
  reviewed_by: brian.shand
114
- safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
110
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
115
111
  lib/ndr_support/ourdate/build_datetime.rb:
116
112
  comments:
117
113
  reviewed_by: brian.shand
118
- safe_revision: 9d19593cc45a9f1724c4b34a1a05a5ff48003084
114
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
119
115
  lib/ndr_support/ourtime.rb:
120
116
  comments:
121
- reviewed_by: ollietulloch
122
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
117
+ reviewed_by: brian.shand
118
+ safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
123
119
  lib/ndr_support/password.rb:
124
120
  comments: with input from brian.shand
125
121
  reviewed_by: josh.pencheon
@@ -146,8 +142,8 @@ file safety:
146
142
  safe_revision: b7b033ad9773cc9037c408a7763b113d31cbf191
147
143
  lib/ndr_support/string/conversions.rb:
148
144
  comments:
149
- reviewed_by: ollietulloch
150
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
145
+ reviewed_by: brian.shand
146
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
151
147
  lib/ndr_support/tasks.rb:
152
148
  comments:
153
149
  reviewed_by: timgentry
@@ -175,7 +171,7 @@ file safety:
175
171
  lib/ndr_support/version.rb:
176
172
  comments:
177
173
  reviewed_by: brian.shand
178
- safe_revision: 8321c488b8a7342762ee8c322ce3ffd5b1a1a880
174
+ safe_revision: c3bc30b08a2fbe089fcde6989ca49ca40004a83e
179
175
  lib/ndr_support/working_days.rb:
180
176
  comments:
181
177
  reviewed_by: josh.pencheon
@@ -187,7 +183,7 @@ file safety:
187
183
  ndr_support.gemspec:
188
184
  comments:
189
185
  reviewed_by: brian.shand
190
- safe_revision: e91fab5ac8474b001ca3805c6cce8eefa6b49f2d
186
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
191
187
  test/array_test.rb:
192
188
  comments:
193
189
  reviewed_by: timgentry
@@ -196,10 +192,14 @@ file safety:
196
192
  comments:
197
193
  reviewed_by: brian.shand
198
194
  safe_revision: bac214f4c93d8753268825408fc560171fac91c0
195
+ test/date_and_time_extensions_test.rb:
196
+ comments:
197
+ reviewed_by: brian.shand
198
+ safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
199
199
  test/daterange_test.rb:
200
200
  comments:
201
- reviewed_by: ollietulloch
202
- safe_revision: ccca1dc67e3742efb154e01e01243e7b38180936
201
+ reviewed_by: brian.shand
202
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
203
203
  test/hash_test.rb:
204
204
  comments:
205
205
  reviewed_by: timgentry
@@ -226,8 +226,8 @@ file safety:
226
226
  safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
227
227
  test/ourdate_test.rb:
228
228
  comments:
229
- reviewed_by: josh.pencheon
230
- safe_revision: 7c32f5a80c1fb7aaf6e850d4b0651a7b47640e15
229
+ reviewed_by: brian.shand
230
+ safe_revision: e977f8c0f8a5c6a1952bd1565b75e16850ef11e0
231
231
  test/ourtime_test.rb:
232
232
  comments:
233
233
  reviewed_by: brian.shand
@@ -258,12 +258,12 @@ file safety:
258
258
  safe_revision: b7b033ad9773cc9037c408a7763b113d31cbf191
259
259
  test/string/conversions_test.rb:
260
260
  comments:
261
- reviewed_by: ollietulloch
262
- safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
261
+ reviewed_by: brian.shand
262
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
263
263
  test/test_helper.rb:
264
264
  comments:
265
- reviewed_by: josh.pencheon
266
- safe_revision: 34ae80f2952f0bfd18688541862774cbaaa6c5f5
265
+ reviewed_by: brian.shand
266
+ safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
267
267
  test/threat_scanner_test.rb:
268
268
  comments:
269
269
  reviewed_by: ollietulloch
@@ -12,9 +12,28 @@ class Date
12
12
 
13
13
  def to_datetime
14
14
  # Default timezone for Date is GMT, not local timezone
15
- return in_time_zone.to_datetime if ActiveRecord::Base.default_timezone == :local
15
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
16
+ ActiveRecord.default_timezone
17
+ else
18
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
19
+ end
20
+ return in_time_zone.to_datetime if default_timezone == :local
21
+
16
22
  orig_to_datetime
17
23
  end
24
+
25
+ alias orig_to_s to_s
26
+
27
+ # Rails 7 stops overriding to_s (without a format specification) (for performance on Ruby 3.1)
28
+ # cf. activesupport-7.0.4/lib/active_support/core_ext/date/deprecated_conversions.rb
29
+ # We keep overriding this for compatibility
30
+ def to_s(format = :default)
31
+ if format == :default
32
+ to_formatted_s(:default)
33
+ else
34
+ orig_to_s(format)
35
+ end
36
+ end
18
37
  end
19
38
 
20
39
  #-------------------------------------------------------------------------------
@@ -24,6 +43,55 @@ class Time
24
43
  def to_iso
25
44
  strftime('%Y-%m-%dT%H:%M:%S')
26
45
  end
46
+
47
+ alias orig_to_s to_s
48
+
49
+ # Rails 7 stops overriding to_s (without a format specification) (for performance on Ruby 3.1)
50
+ # cf. activesupport-7.0.4/lib/active_support/core_ext/date/deprecated_conversions.rb
51
+ # We keep overriding this for compatibility
52
+ def to_s(format = :default)
53
+ if format == :default
54
+ to_formatted_s(:default)
55
+ else
56
+ orig_to_s(format)
57
+ end
58
+ end
59
+ end
60
+
61
+ #-------------------------------------------------------------------------------
62
+
63
+ class DateTime
64
+ alias orig_to_s to_s
65
+
66
+ # Rails 7 stops overriding to_s (without a format specification) (for performance on Ruby 3.1)
67
+ # cf. activesupport-7.0.4/lib/active_support/core_ext/date/deprecated_conversions.rb
68
+ # We keep overriding this for compatibility
69
+ def to_s(format = :default)
70
+ if format == :default
71
+ to_formatted_s(:default)
72
+ else
73
+ orig_to_s(format)
74
+ end
75
+ end
76
+ end
77
+
78
+ #-------------------------------------------------------------------------------
79
+
80
+ module ActiveSupport
81
+ class TimeWithZone
82
+ alias orig_to_s to_s
83
+
84
+ # Rails 7 stops overriding to_s (without a format specification) (for performance on Ruby 3.1)
85
+ # cf. activesupport-7.0.4/lib/active_support/core_ext/date/deprecated_conversions.rb
86
+ # We keep overriding this for compatibility
87
+ def to_s(format = :default)
88
+ if format == :default
89
+ to_formatted_s(:default)
90
+ else
91
+ orig_to_s(format)
92
+ end
93
+ end
94
+ end
27
95
  end
28
96
 
29
97
  #-------------------------------------------------------------------------------
@@ -52,8 +120,8 @@ module NdrSupport
52
120
  def apply_date_patch!
53
121
  # Ensure we emit "yaml-formatted" string, instead of the revised default format.
54
122
  Psych::Visitors::YAMLTree.class_eval do
55
- def visit_Date o
56
- @emitter.scalar o.to_s(:yaml), nil, nil, true, false, Psych::Nodes::Scalar::ANY
123
+ def visit_Date(o)
124
+ @emitter.scalar o.to_formatted_s(:yaml), nil, nil, true, false, Psych::Nodes::Scalar::ANY
57
125
  end
58
126
  end
59
127
  end
@@ -56,7 +56,7 @@ class Daterange
56
56
  end
57
57
 
58
58
  # If we have a valid date range, return a string representation of it
59
- # TODO: possibly add support for to_s(format) e.g. to_s(:short)
59
+ # TODO: possibly add support for to_formatted_s(format) e.g. to_formatted_s(:short)
60
60
  def to_s
61
61
  return '' unless @date1 && @date2
62
62
  if @date1 == @date2 # single date
@@ -139,9 +139,9 @@ class Daterange
139
139
  def tidy_string_if_midnight(datetime)
140
140
  if datetime.hour == 0 && datetime.min == 0 && datetime.sec == 0
141
141
  # it's midnight
142
- datetime.to_date.to_s(:ui)
142
+ datetime.to_date.to_formatted_s(:ui)
143
143
  else
144
- return datetime.to_time.to_s(:ui)
144
+ datetime.to_time.to_formatted_s(:ui)
145
145
  end
146
146
  end
147
147
 
@@ -10,7 +10,12 @@ class Ourdate
10
10
  def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
11
11
  return nil if year.nil?
12
12
 
13
- if ActiveRecord::Base.default_timezone == :local
13
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
14
+ ActiveRecord.default_timezone
15
+ else
16
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
17
+ end
18
+ if default_timezone == :local
14
19
  # Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
15
20
  # Behave like oracle_adapter.rb
16
21
  seconds = sec + Rational(usec, 10**6)
@@ -21,9 +26,9 @@ class Ourdate
21
26
  # but the risk is we lose the usec component unnecesssarily.
22
27
  # Investigate removing .to_datetime below.
23
28
  #++
24
- Time.send(ActiveRecord::Base.default_timezone, *time_array).to_datetime
29
+ Time.send(default_timezone, *time_array).to_datetime
25
30
  rescue
26
- zone_offset = ActiveRecord::Base.default_timezone == :local ? DateTime.now.offset : 0
31
+ zone_offset = default_timezone == :local ? DateTime.now.offset : 0
27
32
  # Append zero calendar reform start to account for dates skipped by calendar reform
28
33
  DateTime.new(*time_array[0..5] << zone_offset << 0) rescue nil
29
34
  end
@@ -15,7 +15,12 @@ class Ourdate
15
15
  #--
16
16
  # TODO: Use Ourdate.build_datetime everywhere below:
17
17
  #++
18
- if ActiveRecord::Base.default_timezone == :local
18
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
19
+ ActiveRecord.default_timezone
20
+ else
21
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
22
+ end
23
+ if default_timezone == :local
19
24
  build_datetime(current_time.year, current_time.month, current_time.day)
20
25
  else
21
26
  #--
@@ -39,7 +44,7 @@ class Ourdate
39
44
  end
40
45
 
41
46
  def to_s
42
- @thedate ? @thedate.to_date.to_s(:ui) : ''
47
+ @thedate ? @thedate.to_date.to_formatted_s(:ui) : ''
43
48
  end
44
49
 
45
50
  def empty?
@@ -24,7 +24,7 @@ class Ourtime
24
24
  end
25
25
 
26
26
  def to_s
27
- @thetime ? @thetime.to_time.to_s(:ui) : ''
27
+ @thetime ? @thetime.to_time.to_formatted_s(:ui) : ''
28
28
  end
29
29
 
30
30
  def empty?
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  require 'active_support/core_ext/string/conversions'
3
2
  require 'ndr_support/daterange'
4
3
  require 'ndr_support/ourdate'
@@ -130,7 +129,13 @@ class String
130
129
 
131
130
  def to_datetime
132
131
  # Default timezone for to_datetime conversion is GMT, not local timezone
133
- return to_time.to_datetime if ActiveRecord::Base.default_timezone == :local
132
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
133
+ ActiveRecord.default_timezone
134
+ else
135
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
136
+ end
137
+ return to_time.to_datetime if default_timezone == :local
138
+
134
139
  orig_to_datetime
135
140
  end
136
141
 
@@ -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.9.2'
6
+ VERSION = '5.9.4'
7
7
  end
data/ndr_support.gemspec CHANGED
@@ -18,17 +18,17 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '>= 5.2.0', '< 7'
22
- spec.add_dependency 'activesupport', '>= 5.2.0', '< 7'
21
+ spec.add_dependency 'activerecord', '>= 6.1', '< 7.1'
22
+ spec.add_dependency 'activesupport', '>= 6.1', '< 7.1'
23
23
 
24
24
  spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake', '>= 12.3.3'
26
26
 
27
- spec.required_ruby_version = '>= 2.7'
27
+ spec.required_ruby_version = '>= 3.0'
28
28
 
29
29
  # Avoid std-lib minitest (which has different namespace)
30
30
  spec.add_development_dependency 'minitest', '>= 5.0.0'
31
- spec.add_development_dependency 'mocha', '~> 1.1'
31
+ spec.add_development_dependency 'mocha', '~> 2.0'
32
32
 
33
33
  spec.add_development_dependency 'ndr_dev_support', '~> 6.0.2'
34
34
 
@@ -0,0 +1,56 @@
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
@@ -166,7 +166,13 @@ class DaterangeTest < Minitest::Test
166
166
  def test_date_with_daylight_saving
167
167
  dr = Daterange.new(Date.new(2017, 9, 2)) # During daylight saving
168
168
  assert_equal '02.09.2017', dr.to_s
169
- return unless ActiveRecord::Base.default_timezone == :local
169
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
170
+ ActiveRecord.default_timezone
171
+ else
172
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
173
+ end
174
+ return unless default_timezone == :local
175
+
170
176
  assert_equal Date.new(2017, 9, 2).in_time_zone.utc_offset, dr.date1.utc_offset, 'Expect consistent offset'
171
177
  assert_equal '2017-09-02'.thetime, dr.date1
172
178
  end
data/test/ourdate_test.rb CHANGED
@@ -5,13 +5,14 @@ class OurdateTest < Minitest::Test
5
5
  def test_date_and_time
6
6
  d = Ourdate.build_datetime(2003, 11, 30)
7
7
  assert_equal '2003-11-30', d.to_iso
8
+ assert_equal '30.11.2003', d.to_formatted_s
8
9
  assert_equal '30.11.2003', d.to_s
9
10
  end
10
11
 
11
12
  def test_ourdate
12
13
  # Creating an Ourdate from a String
13
14
  od = Ourdate.new('01.02.2000')
14
- assert_equal Date.new(2000, 2, 1).to_s(:ui), od.to_s
15
+ assert_equal Date.new(2000, 2, 1).to_formatted_s(:ui), od.to_s
15
16
  assert_kind_of Date, od.thedate
16
17
  assert_equal '01.02.2000', od.thedate.to_s
17
18
  # Creating an Ourdate from a Date
@@ -84,7 +84,13 @@ class String::ConversionsTest < Minitest::Test
84
84
 
85
85
  test 'should convert strings to DateTime correctly' do
86
86
  assert_equal 0, '2018-01-02'.to_datetime.utc_offset
87
- return unless ActiveRecord::Base.default_timezone == :local
87
+ default_timezone = if ActiveRecord.respond_to?(:default_timezone)
88
+ ActiveRecord.default_timezone
89
+ else
90
+ ActiveRecord::Base.default_timezone # Rails <= 6.1
91
+ end
92
+ return unless default_timezone == :local
93
+
88
94
  assert_equal Time.new(2017, 9, 2).utc_offset, '2017-09-02'.to_datetime.utc_offset, 'Expect consistent offset'
89
95
  end
90
96
 
data/test/test_helper.rb CHANGED
@@ -16,7 +16,11 @@ NdrSupport.apply_era_date_formats!
16
16
  # require all dates to be stored in UTC in the database.
17
17
  # Thus a birth date of 1975-06-01 would be stored as 1975-05-31 23.00.00.
18
18
  # Instead, we want to store all times in local time.
19
- ActiveRecord::Base.default_timezone = :local
19
+ if ActiveRecord.respond_to?(:default_timezone=)
20
+ ActiveRecord.default_timezone = :local
21
+ else
22
+ ActiveRecord::Base.default_timezone = :local # Rails <= 6.1
23
+ end
20
24
  ActiveRecord::Base.time_zone_aware_attributes = false
21
25
  Time.zone = 'London'
22
26
 
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.9.2
4
+ version: 5.9.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: 2022-11-17 00:00:00.000000000 Z
11
+ date: 2023-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '7.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 5.2.0
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
32
+ version: '7.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 5.2.0
39
+ version: '6.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '7'
42
+ version: '7.1'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 5.2.0
49
+ version: '6.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '7'
52
+ version: '7.1'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: bundler
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -98,14 +98,14 @@ dependencies:
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '1.1'
101
+ version: '2.0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: '1.1'
108
+ version: '2.0'
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: ndr_dev_support
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -221,7 +221,6 @@ files:
221
221
  - Rakefile
222
222
  - code_safety.yml
223
223
  - gemfiles/Gemfile.rails52
224
- - gemfiles/Gemfile.rails60
225
224
  - gemfiles/Gemfile.rails61
226
225
  - gemfiles/Gemfile.rails70
227
226
  - lib/ndr_support.rb
@@ -257,6 +256,7 @@ files:
257
256
  - ndr_support.gemspec
258
257
  - test/array_test.rb
259
258
  - test/concerns/working_days_test.rb
259
+ - test/date_and_time_extensions_test.rb
260
260
  - test/daterange_test.rb
261
261
  - test/hash_test.rb
262
262
  - test/integer/calculations_test.rb
@@ -291,7 +291,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
291
291
  requirements:
292
292
  - - ">="
293
293
  - !ruby/object:Gem::Version
294
- version: '2.7'
294
+ version: '3.0'
295
295
  required_rubygems_version: !ruby/object:Gem::Requirement
296
296
  requirements:
297
297
  - - ">="
@@ -305,6 +305,7 @@ summary: NDR Support library
305
305
  test_files:
306
306
  - test/array_test.rb
307
307
  - test/concerns/working_days_test.rb
308
+ - test/date_and_time_extensions_test.rb
308
309
  - test/daterange_test.rb
309
310
  - test/hash_test.rb
310
311
  - test/integer/calculations_test.rb
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec path: '..'
4
-
5
- gem 'activerecord', '~> 6.0.0'
6
- gem 'activesupport', '~> 6.0.0'