ndr_support 5.9.2 → 5.9.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: 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'