diff --git a/lib/validates_timeliness/instance_tag.rb b/lib/validates_timeliness/instance_tag.rb index 9c97bad..e20427a 100644 --- a/lib/validates_timeliness/instance_tag.rb +++ b/lib/validates_timeliness/instance_tag.rb @@ -23,7 +23,7 @@ module ValidatesTimeliness raw_value = value_before_type_cast(object) - if raw_value.acts_like?(:time) || raw_value.is_a?(Date) + if raw_value.nil? || raw_value.acts_like?(:time) || raw_value.is_a?(Date) return value_without_timeliness(object) end diff --git a/spec/instance_tag_spec.rb b/spec/instance_tag_spec.rb index cddd336..409b24b 100644 --- a/spec/instance_tag_spec.rb +++ b/spec/instance_tag_spec.rb @@ -6,9 +6,9 @@ describe ValidatesTimeliness::InstanceTag, :type => :helper do @person = Person.new end - it "should display invalid date as date_select values" do - @person.birth_date_and_time = "2008-02-30 12:00:00" - output = date_select(:person, :birth_date_and_time, :include_blank => true) + it "should display invalid datetime as datetime_select values" do + @person.birth_date_and_time = "2008-02-30 12:00:22" + output = datetime_select(:person, :birth_date_and_time, :include_blank => true, :include_seconds => true) output.should have_tag('select[id=person_birth_date_and_time_1i]') do with_tag('option[selected=selected]', '2008') @@ -19,5 +19,20 @@ describe ValidatesTimeliness::InstanceTag, :type => :helper do output.should have_tag('select[id=person_birth_date_and_time_3i]') do with_tag('option[selected=selected]', '30') end + output.should have_tag('select[id=person_birth_date_and_time_4i]') do + with_tag('option[selected=selected]', '12') + end + output.should have_tag('select[id=person_birth_date_and_time_5i]') do + with_tag('option[selected=selected]', '00') + end + output.should have_tag('select[id=person_birth_date_and_time_6i]') do + with_tag('option[selected=selected]', '22') + end + end + + it "should display datetime_select when datetime value is nil" do + @person.birth_date_and_time = nil + output = datetime_select(:person, :birth_date_and_time, :include_blank => true, :include_seconds => true) + output.should have_tag('select', 6) end end