From e7b503ae4f9b9ca6c1d7a9e53d25a4c963150f6b Mon Sep 17 00:00:00 2001 From: Adam Meehan Date: Sun, 18 Sep 2011 18:01:25 +1000 Subject: [PATCH] Fix DateTimeSelect extension to use integers from param values. Change extension spec to use string params. --- .../extensions/date_time_select.rb | 3 +- .../extensions/date_time_select_spec.rb | 48 +++++++++---------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/validates_timeliness/extensions/date_time_select.rb b/lib/validates_timeliness/extensions/date_time_select.rb index 5906593..7ebcc0c 100644 --- a/lib/validates_timeliness/extensions/date_time_select.rb +++ b/lib/validates_timeliness/extensions/date_time_select.rb @@ -10,6 +10,7 @@ module ValidatesTimeliness included do alias_method_chain :datetime_selector, :timeliness + alias_method_chain :value, :timeliness end module InstanceMethods @@ -55,7 +56,7 @@ module ValidatesTimeliness values = [nil] * 6 pairs.map do |(param, value)| - position = param.scan(/\(([0-9]*).*\)/).first.first + position = param.scan(/\((\d+)\w+\)/).first.first values[position.to_i-1] = value.to_i end diff --git a/spec/validates_timeliness/extensions/date_time_select_spec.rb b/spec/validates_timeliness/extensions/date_time_select_spec.rb index 298e156..a873815 100644 --- a/spec/validates_timeliness/extensions/date_time_select_spec.rb +++ b/spec/validates_timeliness/extensions/date_time_select_spec.rb @@ -14,12 +14,12 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do describe "datetime_select" do it "should use param values when attribute is nil" do @params["person"] = { - "birth_datetime(1i)" => 2009, - "birth_datetime(2i)" => 2, - "birth_datetime(3i)" => 29, - "birth_datetime(4i)" => 12, - "birth_datetime(5i)" => 13, - "birth_datetime(6i)" => 14, + "birth_datetime(1i)" => '2009', + "birth_datetime(2i)" => '2', + "birth_datetime(3i)" => '29', + "birth_datetime(4i)" => '12', + "birth_datetime(5i)" => '13', + "birth_datetime(6i)" => '14', } person.birth_datetime = nil @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true) @@ -28,12 +28,12 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do it "should override object values and use params if present" do @params["person"] = { - "birth_datetime(1i)" => 2009, - "birth_datetime(2i)" => 2, - "birth_datetime(3i)" => 29, - "birth_datetime(4i)" => 12, - "birth_datetime(5i)" => 13, - "birth_datetime(6i)" => 14, + "birth_datetime(1i)" => '2009', + "birth_datetime(2i)" => '2', + "birth_datetime(3i)" => '29', + "birth_datetime(4i)" => '12', + "birth_datetime(5i)" => '13', + "birth_datetime(6i)" => '14', } person.birth_datetime = "2010-01-01 15:16:17" @output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true) @@ -63,9 +63,9 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do describe "date_select" do it "should use param values when attribute is nil" do @params["person"] = { - "birth_date(1i)" => 2009, - "birth_date(2i)" => 2, - "birth_date(3i)" => 29, + "birth_date(1i)" => '2009', + "birth_date(2i)" => '2', + "birth_date(3i)" => '29', } person.birth_date = nil @output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true) @@ -74,9 +74,9 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do it "should override object values and use params if present" do @params["person"] = { - "birth_date(1i)" => 2009, - "birth_date(2i)" => 2, - "birth_date(3i)" => 29, + "birth_date(1i)" => '2009', + "birth_date(2i)" => '2', + "birth_date(3i)" => '29', } person.birth_date = "2009-03-01" @output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true) @@ -124,12 +124,12 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do it "should use param values when attribute is nil" do @params["person"] = { - "birth_time(1i)" => 2000, - "birth_time(2i)" => 1, - "birth_time(3i)" => 1, - "birth_time(4i)" => 12, - "birth_time(5i)" => 13, - "birth_time(6i)" => 14, + "birth_time(1i)" => '2000', + "birth_time(2i)" => '1', + "birth_time(3i)" => '1', + "birth_time(4i)" => '12', + "birth_time(5i)" => '13', + "birth_time(6i)" => '14', } person.birth_time = nil @output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)