validates_timeliness 5.0.0 → 5.0.1

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: 2a87264d54db8505c8dcbeff59eda9c7e091d07942c97de3f34e7f9fc2f465c8
4
- data.tar.gz: 504d91a6c0af936ffd864180c4e174521598c13f4c7774966b86808138e6fc51
3
+ metadata.gz: 6c7247761bf59a4add26640ddb732b6bdf816312be3083e972976062d4a43459
4
+ data.tar.gz: ab777d06c23790afbbc56a6a5a173fb8ea98034f52e9903d996c77a20e415574
5
5
  SHA512:
6
- metadata.gz: 335b52bbbd66dd0a2e0a5ca1db25637eb2afb9007418d5a035342de756f391325170ec62fce16f422d30f80ffdf0b2f12e7fdb3fbbcecfb82d3ebbed2e6e2b25
7
- data.tar.gz: cc3000300065dac0b74164ce5491f541fd338fa7649a6a0da722ae4179de48a7c46ec1f6c47aee2a91769058e0e7e2a2565d1d0b1b3c29d8495f5a9814d94041
6
+ metadata.gz: fde85a854481b993e1353a092a5340a62c2c299e2a8f75c8802f334203673e05a64e5323d8af6b1cd3e9c8bd2c8a0b8c6c78dd160aa6630eda7bfb06e10f4166
7
+ data.tar.gz: 5d202ab44a0397c7fbacac804c0bd2e52fdb37c8db672d22340681d01ce70a95a735d6e85e65f0d7ac72c0b6cbbcd159cf3fb715c566dff544e93436b40d103a
data/CHANGELOG.rdoc CHANGED
@@ -1,4 +1,8 @@
1
- = [UNRELEASED]
1
+ = 5.0.1 [2023-01-12]
2
+ * Ensure Date value is converted to time in zone for zone aware attributes
3
+ * Use ActiveSupport #change method to zero out usec
4
+
5
+ = 5.0.0 [2021-04-03]
2
6
  * Fix DateTimeSelect extension support (AquisTech)
3
7
  * Relaxed Timeliness dependency version which allows for >= 0.4.0 with
4
8
  threadsafety fix for use_us_formats and use_euro_formats for hot switching
@@ -19,12 +19,13 @@ module ValidatesTimeliness
19
19
  when :date
20
20
  value.to_date
21
21
  when :datetime
22
- value.is_a?(Time) ? value : value.to_time
22
+ value.is_a?(Time) ? value : (time_zone_aware? ? value.in_time_zone : value.to_time)
23
23
  else
24
24
  value
25
25
  end
26
+
26
27
  if ignore_usec && value.is_a?(Time)
27
- Timeliness::Parser.make_time(Array(value).reverse[4..9], (:current if time_zone_aware?))
28
+ value.change(usec: 0)
28
29
  else
29
30
  value
30
31
  end
@@ -20,7 +20,7 @@ module ActiveModel
20
20
 
21
21
  def timeliness_validation_for(attr_names, type=nil)
22
22
  options = _merge_attributes(attr_names)
23
- options.update(:type => type) if type
23
+ options.update(type: type) if type
24
24
  validates_with TimelinessValidator, options
25
25
  end
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesTimeliness
2
- VERSION = '5.0.0'
2
+ VERSION = '5.0.1'
3
3
  end
@@ -59,30 +59,61 @@ RSpec.describe ValidatesTimeliness::Converter do
59
59
 
60
60
  describe "for datetime type" do
61
61
  let(:type) { :datetime }
62
- let(:time_zone_aware) { true }
63
62
 
64
- it "should return Date as Time value" do
65
- expect(type_cast_value(Date.new(2010, 1, 1))).to eq(Time.local(2010, 1, 1, 0, 0, 0))
63
+ it 'should return nil for invalid value types' do
64
+ expect(type_cast_value(12)).to eq(nil)
66
65
  end
67
66
 
68
- it "should return same Time value" do
69
- value = Time.utc(2010, 1, 1, 12, 34, 56)
70
- expect(type_cast_value(Time.utc(2010, 1, 1, 12, 34, 56))).to eq(value)
71
- end
67
+ context "time zone aware" do
68
+ let(:time_zone_aware) { true }
72
69
 
73
- it "should return as Time with same component values" do
74
- expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56))).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
75
- end
70
+ around { |example|
71
+ Time.use_zone("Perth", &example)
72
+ }
73
+
74
+ it "should return Date as Time value" do
75
+ Time.use_zone('London') do
76
+ result = type_cast_value(Date.new(2010, 1, 1))
77
+ expected = Time.zone.local(2010, 1, 1, 0, 0, 0)
78
+
79
+ expect(result).to eq(expected)
80
+ expect(result.zone).to eq(expected.zone)
81
+ end
82
+ end
83
+
84
+ it "should return same Time value" do
85
+ value = Time.utc(2010, 1, 1, 12, 34, 56)
86
+ expect(type_cast_value(value)).to eq(value)
87
+ end
88
+
89
+ it "should return as Time with same component values" do
90
+ expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56))).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
91
+ end
76
92
 
77
- it "should return same Time in correct zone if timezone aware" do
78
- value = Time.utc(2010, 1, 1, 12, 34, 56)
79
- result = type_cast_value(value)
80
- expect(result).to eq(Time.zone.local(2010, 1, 1, 23, 34, 56))
81
- expect(result.zone).to eq('AEDT')
93
+ it "should return same Time in correct zone if timezone aware" do
94
+ value = Time.utc(2010, 1, 1, 12, 34, 56)
95
+ result = type_cast_value(value)
96
+
97
+ expect(result).to eq(Time.zone.local(2010, 1, 1, 20, 34, 56))
98
+ expect(result.zone).to eq('AWST')
99
+ end
82
100
  end
83
101
 
84
- it 'should return nil for invalid value types' do
85
- expect(type_cast_value(12)).to eq(nil)
102
+ context "not time zone aware" do
103
+ let(:time_zone_aware) { false }
104
+
105
+ it "should return Date as Time value" do
106
+ expect(type_cast_value(Date.new(2010, 1, 1))).to eq(Time.local(2010, 1, 1, 0, 0, 0))
107
+ end
108
+
109
+ it "should return same Time value" do
110
+ value = Time.utc(2010, 1, 1, 12, 34, 56)
111
+ expect(type_cast_value(Time.utc(2010, 1, 1, 12, 34, 56))).to eq(value)
112
+ end
113
+
114
+ it "should return as Time with same component values" do
115
+ expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56))).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
116
+ end
86
117
  end
87
118
  end
88
119
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_timeliness
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Meehan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-02 00:00:00.000000000 Z
11
+ date: 2023-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: timeliness
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.0.3
106
+ rubygems_version: 3.1.6
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Date and time validation plugin for Rails which allows custom formats