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 +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +11 -0
- data/code_safety.yml +27 -27
- data/lib/ndr_support/date_and_time_extensions.rb +71 -3
- data/lib/ndr_support/daterange.rb +3 -3
- data/lib/ndr_support/ourdate/build_datetime.rb +8 -3
- data/lib/ndr_support/ourdate.rb +7 -2
- data/lib/ndr_support/ourtime.rb +1 -1
- data/lib/ndr_support/string/conversions.rb +7 -2
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +4 -4
- data/test/date_and_time_extensions_test.rb +56 -0
- data/test/daterange_test.rb +7 -1
- data/test/ourdate_test.rb +2 -1
- data/test/string/conversions_test.rb +7 -1
- data/test/test_helper.rb +5 -1
- metadata +15 -14
- data/gemfiles/Gemfile.rails60 +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4ca42961473b3e0f614709e4506f7f37e44b14e4f212db71e59e5386f7f4b852
|
|
4
|
+
data.tar.gz: 3d213bdfe03991c73f7bffe451208fec727d52337cdaf659e1a815d503962929
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cc033dac0c4eb88222a0b75630fad6505902f680b153ea2a8024cf5fa1ba8823d935e0f75f1384f9e716bfbe6265ba980ea3fb892a263f506737bb146356eff3
|
|
7
|
+
data.tar.gz: 7930201e594ad93153ff833e76e7ed5ced7eb3c35f4c57a88404a36e5e1e64b36bf79c2f764449bccc5eb5a139a03a9edf9b7f427efd4a78e97697f68b7e3096
|
data/.rubocop.yml
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
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:
|
|
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:
|
|
22
|
-
safe_revision:
|
|
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:
|
|
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:
|
|
82
|
-
safe_revision:
|
|
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:
|
|
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:
|
|
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:
|
|
114
|
+
safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
|
|
119
115
|
lib/ndr_support/ourtime.rb:
|
|
120
116
|
comments:
|
|
121
|
-
reviewed_by:
|
|
122
|
-
safe_revision:
|
|
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:
|
|
150
|
-
safe_revision:
|
|
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:
|
|
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:
|
|
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:
|
|
202
|
-
safe_revision:
|
|
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:
|
|
230
|
-
safe_revision:
|
|
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:
|
|
262
|
-
safe_revision:
|
|
261
|
+
reviewed_by: brian.shand
|
|
262
|
+
safe_revision: 8796a1a32273a106a6b1a134a48077cff0176659
|
|
263
263
|
test/test_helper.rb:
|
|
264
264
|
comments:
|
|
265
|
-
reviewed_by:
|
|
266
|
-
safe_revision:
|
|
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
|
-
|
|
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
|
|
56
|
-
@emitter.scalar o.
|
|
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
|
|
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.
|
|
142
|
+
datetime.to_date.to_formatted_s(:ui)
|
|
143
143
|
else
|
|
144
|
-
|
|
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
|
|
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(
|
|
29
|
+
Time.send(default_timezone, *time_array).to_datetime
|
|
25
30
|
rescue
|
|
26
|
-
zone_offset =
|
|
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
|
data/lib/ndr_support/ourdate.rb
CHANGED
|
@@ -15,7 +15,12 @@ class Ourdate
|
|
|
15
15
|
#--
|
|
16
16
|
# TODO: Use Ourdate.build_datetime everywhere below:
|
|
17
17
|
#++
|
|
18
|
-
if ActiveRecord
|
|
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.
|
|
47
|
+
@thedate ? @thedate.to_date.to_formatted_s(:ui) : ''
|
|
43
48
|
end
|
|
44
49
|
|
|
45
50
|
def empty?
|
data/lib/ndr_support/ourtime.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
|
data/lib/ndr_support/version.rb
CHANGED
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', '>=
|
|
22
|
-
spec.add_dependency 'activesupport', '>=
|
|
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 = '>=
|
|
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', '~>
|
|
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
|
data/test/daterange_test.rb
CHANGED
|
@@ -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
|
-
|
|
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).
|
|
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
|
-
|
|
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
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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
|