validates_timeliness 4.1.1 → 6.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +7 -0
  3. data/.github/workflows/ci.yml +41 -0
  4. data/CHANGELOG.rdoc +14 -6
  5. data/LICENSE +1 -1
  6. data/README.md +321 -0
  7. data/Rakefile +0 -10
  8. data/gemfiles/rails_6_0.gemfile +14 -0
  9. data/gemfiles/rails_6_1.gemfile +14 -0
  10. data/gemfiles/rails_edge.gemfile +14 -0
  11. data/lib/validates_timeliness/attribute_methods.rb +34 -73
  12. data/lib/validates_timeliness/{conversion.rb → converter.rb} +26 -14
  13. data/lib/validates_timeliness/extensions/date_time_select.rb +23 -27
  14. data/lib/validates_timeliness/extensions/multiparameter_handler.rb +47 -66
  15. data/lib/validates_timeliness/extensions.rb +2 -2
  16. data/lib/validates_timeliness/orm/active_model.rb +53 -2
  17. data/lib/validates_timeliness/orm/active_record.rb +2 -84
  18. data/lib/validates_timeliness/railtie.rb +1 -1
  19. data/lib/validates_timeliness/validator.rb +21 -18
  20. data/lib/validates_timeliness/version.rb +1 -1
  21. data/lib/validates_timeliness.rb +3 -3
  22. data/spec/spec_helper.rb +2 -0
  23. data/spec/support/model_helpers.rb +1 -2
  24. data/spec/support/test_model.rb +6 -4
  25. data/spec/validates_timeliness/attribute_methods_spec.rb +0 -15
  26. data/spec/validates_timeliness/{conversion_spec.rb → converter_spec.rb} +64 -49
  27. data/spec/validates_timeliness/extensions/date_time_select_spec.rb +27 -27
  28. data/spec/validates_timeliness/extensions/multiparameter_handler_spec.rb +10 -10
  29. data/spec/validates_timeliness/orm/active_record_spec.rb +72 -136
  30. data/validates_timeliness.gemspec +4 -3
  31. metadata +38 -16
  32. data/.travis.yml +0 -24
  33. data/README.rdoc +0 -300
  34. data/gemfiles/rails_4_2.gemfile +0 -14
@@ -1,94 +1,109 @@
1
- RSpec.describe ValidatesTimeliness::Conversion do
2
- include ValidatesTimeliness::Conversion
1
+ RSpec.describe ValidatesTimeliness::Converter do
2
+ subject(:converter) { described_class.new(type: type, time_zone_aware: time_zone_aware, ignore_usec: ignore_usec) }
3
3
 
4
4
  let(:options) { Hash.new }
5
+ let(:type) { :date }
6
+ let(:time_zone_aware) { false }
7
+ let(:ignore_usec) { false }
5
8
 
6
9
  before do
7
10
  Timecop.freeze(Time.mktime(2010, 1, 1, 0, 0, 0))
8
11
  end
9
12
 
13
+ delegate :type_cast_value, :evaluate, :parse, :dummy_time, to: :converter
14
+
10
15
  describe "#type_cast_value" do
11
16
  describe "for date type" do
17
+ let(:type) { :date }
18
+
12
19
  it "should return same value for date value" do
13
- expect(type_cast_value(Date.new(2010, 1, 1), :date)).to eq(Date.new(2010, 1, 1))
20
+ expect(type_cast_value(Date.new(2010, 1, 1))).to eq(Date.new(2010, 1, 1))
14
21
  end
15
22
 
16
23
  it "should return date part of time value" do
17
- expect(type_cast_value(Time.mktime(2010, 1, 1, 0, 0, 0), :date)).to eq(Date.new(2010, 1, 1))
24
+ expect(type_cast_value(Time.mktime(2010, 1, 1, 0, 0, 0))).to eq(Date.new(2010, 1, 1))
18
25
  end
19
26
 
20
27
  it "should return date part of datetime value" do
21
- expect(type_cast_value(DateTime.new(2010, 1, 1, 0, 0, 0), :date)).to eq(Date.new(2010, 1, 1))
28
+ expect(type_cast_value(DateTime.new(2010, 1, 1, 0, 0, 0))).to eq(Date.new(2010, 1, 1))
22
29
  end
23
30
 
24
31
  it 'should return nil for invalid value types' do
25
- expect(type_cast_value(12, :date)).to eq(nil)
32
+ expect(type_cast_value(12)).to eq(nil)
26
33
  end
27
34
  end
28
35
 
29
36
  describe "for time type" do
37
+ let(:type) { :time }
38
+
30
39
  it "should return same value for time value matching dummy date part" do
31
- expect(type_cast_value(Time.utc(2000, 1, 1, 0, 0, 0), :time)).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
40
+ expect(type_cast_value(Time.utc(2000, 1, 1, 0, 0, 0))).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
32
41
  end
33
42
 
34
43
  it "should return dummy time value with same time part for time value with different date" do
35
- expect(type_cast_value(Time.utc(2010, 1, 1, 0, 0, 0), :time)).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
44
+ expect(type_cast_value(Time.utc(2010, 1, 1, 0, 0, 0))).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
36
45
  end
37
46
 
38
47
  it "should return dummy time only for date value" do
39
- expect(type_cast_value(Date.new(2010, 1, 1), :time)).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
48
+ expect(type_cast_value(Date.new(2010, 1, 1))).to eq(Time.utc(2000, 1, 1, 0, 0, 0))
40
49
  end
41
50
 
42
51
  it "should return dummy date with time part for datetime value" do
43
- expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56), :time)).to eq(Time.utc(2000, 1, 1, 12, 34, 56))
52
+ expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56))).to eq(Time.utc(2000, 1, 1, 12, 34, 56))
44
53
  end
45
54
 
46
55
  it 'should return nil for invalid value types' do
47
- expect(type_cast_value(12, :time)).to eq(nil)
56
+ expect(type_cast_value(12)).to eq(nil)
48
57
  end
49
58
  end
50
59
 
51
60
  describe "for datetime type" do
61
+ let(:type) { :datetime }
62
+ let(:time_zone_aware) { true }
63
+
52
64
  it "should return Date as Time value" do
53
- expect(type_cast_value(Date.new(2010, 1, 1), :datetime)).to eq(Time.local(2010, 1, 1, 0, 0, 0))
65
+ expect(type_cast_value(Date.new(2010, 1, 1))).to eq(Time.local(2010, 1, 1, 0, 0, 0))
54
66
  end
55
67
 
56
68
  it "should return same Time value" do
57
69
  value = Time.utc(2010, 1, 1, 12, 34, 56)
58
- expect(type_cast_value(Time.utc(2010, 1, 1, 12, 34, 56), :datetime)).to eq(value)
70
+ expect(type_cast_value(Time.utc(2010, 1, 1, 12, 34, 56))).to eq(value)
59
71
  end
60
72
 
61
73
  it "should return as Time with same component values" do
62
- expect(type_cast_value(DateTime.civil_from_format(:utc, 2010, 1, 1, 12, 34, 56), :datetime)).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
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))
63
75
  end
64
76
 
65
77
  it "should return same Time in correct zone if timezone aware" do
66
- @timezone_aware = true
67
78
  value = Time.utc(2010, 1, 1, 12, 34, 56)
68
- result = type_cast_value(value, :datetime)
79
+ result = type_cast_value(value)
69
80
  expect(result).to eq(Time.zone.local(2010, 1, 1, 23, 34, 56))
70
81
  expect(result.zone).to eq('AEDT')
71
82
  end
72
83
 
73
84
  it 'should return nil for invalid value types' do
74
- expect(type_cast_value(12, :datetime)).to eq(nil)
85
+ expect(type_cast_value(12)).to eq(nil)
75
86
  end
76
87
  end
77
88
 
78
89
  describe "ignore_usec option" do
79
- let(:options) { {:ignore_usec => true} }
90
+ let(:type) { :datetime }
91
+ let(:ignore_usec) { true }
80
92
 
81
93
  it "should ignore usec on time values when evaluated" do
82
94
  value = Time.utc(2010, 1, 1, 12, 34, 56, 10000)
83
- expect(type_cast_value(value, :datetime)).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
95
+ expect(type_cast_value(value)).to eq(Time.utc(2010, 1, 1, 12, 34, 56))
84
96
  end
85
97
 
86
- it "should ignore usec and return time in correct zone if timezone aware" do
87
- @timezone_aware = true
88
- value = Time.utc(2010, 1, 1, 12, 34, 56, 10000)
89
- result = type_cast_value(value, :datetime)
90
- expect(result).to eq(Time.zone.local(2010, 1, 1, 23, 34, 56))
91
- expect(result.zone).to eq('AEDT')
98
+ context do
99
+ let(:time_zone_aware) { true }
100
+
101
+ it "should ignore usec and return time in correct zone if timezone aware" do
102
+ value = Time.utc(2010, 1, 1, 12, 34, 56, 10000)
103
+ result = type_cast_value(value)
104
+ expect(result).to eq(Time.zone.local(2010, 1, 1, 23, 34, 56))
105
+ expect(result.zone).to eq('AEDT')
106
+ end
92
107
  end
93
108
  end
94
109
  end
@@ -103,7 +118,6 @@ RSpec.describe ValidatesTimeliness::Conversion do
103
118
  end
104
119
 
105
120
  it 'should return time component values shifted to current zone if timezone aware' do
106
- @timezone_aware = true
107
121
  expect(dummy_time(Time.utc(2000, 1, 1, 12, 34, 56))).to eq(Time.zone.local(2000, 1, 1, 23, 34, 56))
108
122
  end
109
123
 
@@ -120,61 +134,64 @@ RSpec.describe ValidatesTimeliness::Conversion do
120
134
  end
121
135
  end
122
136
 
123
- describe "#evaluate_option_value" do
137
+ describe "#evaluate" do
124
138
  let(:person) { Person.new }
125
139
 
126
140
  it 'should return Date object as is' do
127
141
  value = Date.new(2010,1,1)
128
- expect(evaluate_option_value(value, person)).to eq(value)
142
+ expect(evaluate(value, person)).to eq(value)
129
143
  end
130
144
 
131
145
  it 'should return Time object as is' do
132
146
  value = Time.mktime(2010,1,1)
133
- expect(evaluate_option_value(value, person)).to eq(value)
147
+ expect(evaluate(value, person)).to eq(value)
134
148
  end
135
149
 
136
150
  it 'should return DateTime object as is' do
137
151
  value = DateTime.new(2010,1,1,0,0,0)
138
- expect(evaluate_option_value(value, person)).to eq(value)
152
+ expect(evaluate(value, person)).to eq(value)
139
153
  end
140
154
 
141
155
  it 'should return Time value returned from proc with 0 arity' do
142
156
  value = Time.mktime(2010,1,1)
143
- expect(evaluate_option_value(lambda { value }, person)).to eq(value)
157
+ expect(evaluate(lambda { value }, person)).to eq(value)
144
158
  end
145
159
 
146
160
  it 'should return Time value returned by record attribute call in proc arity of 1' do
147
161
  value = Time.mktime(2010,1,1)
148
162
  person.birth_time = value
149
- expect(evaluate_option_value(lambda {|r| r.birth_time }, person)).to eq(value)
163
+ expect(evaluate(lambda {|r| r.birth_time }, person)).to eq(value)
150
164
  end
151
165
 
152
166
  it 'should return Time value for attribute method symbol which returns Time' do
153
167
  value = Time.mktime(2010,1,1)
154
- person.birth_time = value
155
- expect(evaluate_option_value(:birth_time, person)).to eq(value)
168
+ person.birth_datetime = value
169
+ expect(evaluate(:birth_datetime, person)).to eq(value)
156
170
  end
157
171
 
158
172
  it 'should return Time value is default zone from string time value' do
159
173
  value = '2010-01-01 12:00:00'
160
- expect(evaluate_option_value(value, person)).to eq(Time.utc(2010,1,1,12,0,0))
174
+ expect(evaluate(value, person)).to eq(Time.utc(2010,1,1,12,0,0))
161
175
  end
162
176
 
163
- it 'should return Time value is current zone from string time value if timezone aware' do
164
- @timezone_aware = true
165
- value = '2010-01-01 12:00:00'
166
- expect(evaluate_option_value(value, person)).to eq(Time.zone.local(2010,1,1,12,0,0))
177
+ context do
178
+ let(:converter) { described_class.new(type: :date, time_zone_aware: true) }
179
+
180
+ it 'should return Time value is current zone from string time value if timezone aware' do
181
+ value = '2010-01-01 12:00:00'
182
+ expect(evaluate(value, person)).to eq(Time.zone.local(2010,1,1,12,0,0))
183
+ end
167
184
  end
168
185
 
169
186
  it 'should return Time value in default zone from proc which returns string time' do
170
- value = '2010-01-01 12:00:00'
171
- expect(evaluate_option_value(lambda { value }, person)).to eq(Time.utc(2010,1,1,12,0,0))
187
+ value = '2010-11-12 13:00:00'
188
+ expect(evaluate(lambda { value }, person)).to eq(Time.utc(2010,11,12,13,0,0))
172
189
  end
173
190
 
174
191
  it 'should return Time value for attribute method symbol which returns string time value' do
175
- value = '2010-01-01 12:00:00'
192
+ value = '13:00:00'
176
193
  person.birth_time = value
177
- expect(evaluate_option_value(:birth_time, person)).to eq(Time.local(2010,1,1,12,0,0))
194
+ expect(evaluate(:birth_time, person)).to eq(Time.utc(2000,1,1,13,0,0))
178
195
  end
179
196
 
180
197
  context "restriction shorthand" do
@@ -183,17 +200,17 @@ RSpec.describe ValidatesTimeliness::Conversion do
183
200
  end
184
201
 
185
202
  it 'should evaluate :now as current time' do
186
- expect(evaluate_option_value(:now, person)).to eq(Time.now)
203
+ expect(evaluate(:now, person)).to eq(Time.now)
187
204
  end
188
205
 
189
206
  it 'should evaluate :today as current time' do
190
- expect(evaluate_option_value(:today, person)).to eq(Date.today)
207
+ expect(evaluate(:today, person)).to eq(Date.today)
191
208
  end
192
209
 
193
210
  it 'should not use shorthand if symbol if is record method' do
194
211
  time = 1.day.from_now
195
212
  allow(person).to receive(:now).and_return(time)
196
- expect(evaluate_option_value(:now, person)).to eq(time)
213
+ expect(evaluate(:now, person)).to eq(time)
197
214
  end
198
215
  end
199
216
  end
@@ -212,13 +229,11 @@ RSpec.describe ValidatesTimeliness::Conversion do
212
229
  with_config(:use_plugin_parser, false)
213
230
 
214
231
  it 'should use Time.zone.parse attribute is timezone aware' do
215
- @timezone_aware = true
216
- expect(Time.zone).to receive(:parse)
232
+ expect(Timeliness::Parser).to_not receive(:parse)
217
233
  parse('2000-01-01')
218
234
  end
219
235
 
220
236
  it 'should use value#to_time if use_plugin_parser setting is false and attribute is not timezone aware' do
221
- @timezone_aware = false
222
237
  value = '2000-01-01'
223
238
  expect(value).to receive(:to_time)
224
239
  parse(value)
@@ -20,8 +20,8 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
20
20
  "birth_datetime(6i)" => '14',
21
21
  }
22
22
  person.birth_datetime = nil
23
- @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
24
- should_have_datetime_selected(:birth_datetime, :year => 2009, :month => 'February', :day => 29, :hour => 12, :min => 13, :sec => 14)
23
+ @output = datetime_select(:person, :birth_datetime, include_blank: true, include_seconds: true)
24
+ should_have_datetime_selected(:birth_datetime, year: 2009, month: 'February', day: 29, hour: 12, min: 13, sec: 14)
25
25
  end
26
26
 
27
27
  it "should override object values and use params if present" do
@@ -34,26 +34,26 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
34
34
  "birth_datetime(6i)" => '14',
35
35
  }
36
36
  person.birth_datetime = "2010-01-01 15:16:17"
37
- @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
38
- should_have_datetime_selected(:birth_datetime, :year => 2009, :month => 'February', :day => 29, :hour => 12, :min => 13, :sec => 14)
37
+ @output = datetime_select(:person, :birth_datetime, include_blank: true, include_seconds: true)
38
+ should_have_datetime_selected(:birth_datetime, year: 2009, month: 'February', day: 29, hour: 12, min: 13, sec: 14)
39
39
  end
40
40
 
41
41
  it "should use attribute values from object if no params" do
42
42
  person.birth_datetime = "2009-01-02 12:13:14"
43
- @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
44
- should_have_datetime_selected(:birth_datetime, :year => 2009, :month => 'January', :day => 2, :hour => 12, :min => 13, :sec => 14)
43
+ @output = datetime_select(:person, :birth_datetime, include_blank: true, include_seconds: true)
44
+ should_have_datetime_selected(:birth_datetime, year: 2009, month: 'January', day: 2, hour: 12, min: 13, sec: 14)
45
45
  end
46
46
 
47
47
  it "should use attribute values if params does not contain attribute params" do
48
48
  person.birth_datetime = "2009-01-02 12:13:14"
49
49
  @params["person"] = { }
50
- @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
51
- should_have_datetime_selected(:birth_datetime, :year => 2009, :month => 'January', :day => 2, :hour => 12, :min => 13, :sec => 14)
50
+ @output = datetime_select(:person, :birth_datetime, include_blank: true, include_seconds: true)
51
+ should_have_datetime_selected(:birth_datetime, year: 2009, month: 'January', day: 2, hour: 12, min: 13, sec: 14)
52
52
  end
53
53
 
54
54
  it "should not select values when attribute value is nil and has no param values" do
55
55
  person.birth_datetime = nil
56
- @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
56
+ @output = datetime_select(:person, :birth_datetime, include_blank: true, include_seconds: true)
57
57
  should_not_have_datetime_selected(:birth_datetime, :year, :month, :day, :hour, :min, :sec)
58
58
  end
59
59
  end
@@ -66,8 +66,8 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
66
66
  "birth_date(3i)" => '29',
67
67
  }
68
68
  person.birth_date = nil
69
- @output = date_select(:person, :birth_date, :include_blank => true)
70
- should_have_datetime_selected(:birth_date, :year => 2009, :month => 'February', :day => 29)
69
+ @output = date_select(:person, :birth_date, include_blank: true)
70
+ should_have_datetime_selected(:birth_date, year: 2009, month: 'February', day: 29)
71
71
  end
72
72
 
73
73
  it "should override object values and use params if present" do
@@ -77,26 +77,26 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
77
77
  "birth_date(3i)" => '29',
78
78
  }
79
79
  person.birth_date = "2009-03-01"
80
- @output = date_select(:person, :birth_date, :include_blank => true)
81
- should_have_datetime_selected(:birth_date, :year => 2009, :month => 'February', :day => 29)
80
+ @output = date_select(:person, :birth_date, include_blank: true)
81
+ should_have_datetime_selected(:birth_date, year: 2009, month: 'February', day: 29)
82
82
  end
83
83
 
84
84
  it "should select attribute values from object if no params" do
85
85
  person.birth_date = "2009-01-02"
86
- @output = date_select(:person, :birth_date, :include_blank => true)
87
- should_have_datetime_selected(:birth_date, :year => 2009, :month => 'January', :day => 2)
86
+ @output = date_select(:person, :birth_date, include_blank: true)
87
+ should_have_datetime_selected(:birth_date, year: 2009, month: 'January', day: 2)
88
88
  end
89
89
 
90
90
  it "should select attribute values if params does not contain attribute params" do
91
91
  person.birth_date = "2009-01-02"
92
92
  @params["person"] = { }
93
- @output = date_select(:person, :birth_date, :include_blank => true)
94
- should_have_datetime_selected(:birth_date, :year => 2009, :month => 'January', :day => 2)
93
+ @output = date_select(:person, :birth_date, include_blank: true)
94
+ should_have_datetime_selected(:birth_date, year: 2009, month: 'January', day: 2)
95
95
  end
96
96
 
97
97
  it "should not select values when attribute value is nil and has no param values" do
98
98
  person.birth_date = nil
99
- @output = date_select(:person, :birth_date, :include_blank => true)
99
+ @output = date_select(:person, :birth_date, include_blank: true)
100
100
  should_not_have_datetime_selected(:birth_time, :year, :month, :day)
101
101
  end
102
102
 
@@ -106,8 +106,8 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
106
106
  "birth_date(2i)" => '2',
107
107
  }
108
108
 
109
- @output = date_select(:person, :birth_date, :include_blank => true, :discard_day => true)
110
- should_have_datetime_selected(:birth_date, :year => 2009, :month => 'February')
109
+ @output = date_select(:person, :birth_date, include_blank: true, discard_day: true)
110
+ should_have_datetime_selected(:birth_date, year: 2009, month: 'February')
111
111
  should_not_have_datetime_selected(:birth_time, :day)
112
112
  expect(@output).to have_tag("input[id=person_birth_date_3i][type=hidden][value='1']")
113
113
  end
@@ -128,33 +128,33 @@ RSpec.describe 'ValidatesTimeliness::Extensions::DateTimeSelect' do
128
128
  "birth_time(6i)" => '14',
129
129
  }
130
130
  person.birth_time = nil
131
- @output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
132
- should_have_datetime_selected(:birth_time, :hour => 12, :min => 13, :sec => 14)
131
+ @output = time_select(:person, :birth_time, include_blank: true, include_seconds: true)
132
+ should_have_datetime_selected(:birth_time, hour: 12, min: 13, sec: 14)
133
133
  end
134
134
 
135
135
  it "should select attribute values from object if no params" do
136
136
  person.birth_time = "2000-01-01 12:13:14"
137
- @output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
138
- should_have_datetime_selected(:birth_time, :hour => 12, :min => 13, :sec => 14)
137
+ @output = time_select(:person, :birth_time, include_blank: true, include_seconds: true)
138
+ should_have_datetime_selected(:birth_time, hour: 12, min: 13, sec: 14)
139
139
  end
140
140
 
141
141
  it "should not select values when attribute value is nil and has no param values" do
142
142
  person.birth_time = nil
143
- @output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
143
+ @output = time_select(:person, :birth_time, include_blank: true, include_seconds: true)
144
144
  should_not_have_datetime_selected(:birth_time, :hour, :min, :sec)
145
145
  end
146
146
  end
147
147
 
148
148
  def should_have_datetime_selected(field, datetime_hash)
149
149
  datetime_hash.each do |key, value|
150
- index = {:year => 1, :month => 2, :day => 3, :hour => 4, :min => 5, :sec => 6}[key]
150
+ index = {year: 1, month: 2, day: 3, hour: 4, min: 5, sec: 6}[key]
151
151
  expect(@output).to have_tag("select[id=person_#{field}_#{index}i] option[selected=selected]", value.to_s)
152
152
  end
153
153
  end
154
154
 
155
155
  def should_not_have_datetime_selected(field, *attributes)
156
156
  attributes.each do |attribute|
157
- index = {:year => 1, :month => 2, :day => 3, :hour => 4, :min => 5, :sec => 6}[attribute]
157
+ index = {year: 1, month: 2, day: 3, hour: 4, min: 5, sec: 6}[attribute]
158
158
  expect(@output).not_to have_tag("select[id=person_#{attribute}_#{index}i] option[selected=selected]")
159
159
  end
160
160
  end
@@ -1,36 +1,36 @@
1
1
  RSpec.describe 'ValidatesTimeliness::Extensions::MultiparameterHandler' do
2
2
 
3
3
  context "time column" do
4
- it 'should assign a string value for invalid date portion' do
4
+ it 'should be nil invalid date portion' do
5
5
  employee = record_with_multiparameter_attribute(:birth_datetime, [2000, 2, 31, 12, 0, 0])
6
- expect(employee.birth_datetime_before_type_cast).to eq '2000-02-31 12:00:00'
6
+ expect(employee.birth_datetime).to be_nil
7
7
  end
8
8
 
9
9
  it 'should assign a Time value for valid datetimes' do
10
10
  employee = record_with_multiparameter_attribute(:birth_datetime, [2000, 2, 28, 12, 0, 0])
11
- expect(employee.birth_datetime_before_type_cast).to eq Time.zone.local(2000, 2, 28, 12, 0, 0)
11
+ expect(employee.birth_datetime).to eq Time.zone.local(2000, 2, 28, 12, 0, 0)
12
12
  end
13
13
 
14
- it 'should assign a string value for incomplete time' do
14
+ it 'should be nil for incomplete date portion' do
15
15
  employee = record_with_multiparameter_attribute(:birth_datetime, [2000, nil, nil])
16
- expect(employee.birth_datetime_before_type_cast).to eq '2000-00-00'
16
+ expect(employee.birth_datetime).to be_nil
17
17
  end
18
18
  end
19
19
 
20
20
  context "date column" do
21
- it 'should assign a string value for invalid date' do
21
+ it 'should assign nil for invalid date' do
22
22
  employee = record_with_multiparameter_attribute(:birth_date, [2000, 2, 31])
23
- expect(employee.birth_date_before_type_cast).to eq '2000-02-31'
23
+ expect(employee.birth_date).to be_nil
24
24
  end
25
25
 
26
26
  it 'should assign a Date value for valid date' do
27
27
  employee = record_with_multiparameter_attribute(:birth_date, [2000, 2, 28])
28
- expect(employee.birth_date_before_type_cast).to eq Date.new(2000, 2, 28)
28
+ expect(employee.birth_date).to eq Date.new(2000, 2, 28)
29
29
  end
30
30
 
31
- it 'should assign a string value for incomplete date' do
31
+ it 'should assign hash values for incomplete date' do
32
32
  employee = record_with_multiparameter_attribute(:birth_date, [2000, nil, nil])
33
- expect(employee.birth_date_before_type_cast).to eq '2000-00-00'
33
+ expect(employee.birth_date).to be_nil
34
34
  end
35
35
  end
36
36