mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-25 15:22:58 +00:00
changed format of string used in multi param for invalid or partial values
This commit is contained in:
@@ -1,19 +1,17 @@
|
||||
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
||||
|
||||
ValidatesTimeliness.enable_datetime_select_extension!
|
||||
|
||||
describe 'ValidatesTimeliness::ActionView::InstanceTag' do
|
||||
include ActionView::Helpers::DateHelper
|
||||
include ActionController::Assertions::SelectorAssertions
|
||||
|
||||
|
||||
before do
|
||||
@person = Person.new
|
||||
end
|
||||
|
||||
|
||||
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')
|
||||
end
|
||||
@@ -33,10 +31,33 @@ describe 'ValidatesTimeliness::ActionView::InstanceTag' 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
|
||||
|
||||
it "should display datetime_select with no values selected for missing parts" do
|
||||
@person.birth_date_and_time = '2000-- ::'
|
||||
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]')
|
||||
end
|
||||
output.should have_tag('select[id=person_birth_date_and_time_2i]') do
|
||||
without_tag('option[selected=selected]')
|
||||
end
|
||||
output.should have_tag('select[id=person_birth_date_and_time_3i]') do
|
||||
without_tag('option[selected=selected]')
|
||||
end
|
||||
output.should have_tag('select[id=person_birth_date_and_time_4i]') do
|
||||
without_tag('option[selected=selected]')
|
||||
end
|
||||
output.should have_tag('select[id=person_birth_date_and_time_5i]') do
|
||||
without_tag('option[selected=selected]')
|
||||
end
|
||||
output.should have_tag('select[id=person_birth_date_and_time_6i]') do
|
||||
without_tag('option[selected=selected]')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,44 +9,110 @@ describe ValidatesTimeliness::ActiveRecord::MultiparameterAttributes do
|
||||
time_string = time_array_to_string([2000,2,1,9,10,11], :datetime)
|
||||
time_string.should == "2000-02-01 09:10:11"
|
||||
end
|
||||
|
||||
|
||||
it "should convert array for date type into date string" do
|
||||
time_string = time_array_to_string([2000,2,1], :date)
|
||||
time_string.should == "2000-02-01"
|
||||
end
|
||||
|
||||
|
||||
it "should convert array for time type into time string" do
|
||||
time_string = time_array_to_string([2000,1,1,9,10,11], :time)
|
||||
time_string.should == "09:10:11"
|
||||
end
|
||||
|
||||
describe "execute_callstack_for_multiparameter_attributes" do
|
||||
before do
|
||||
@callstack = {
|
||||
'birth_date_and_time' => [2000,2,1,9,10,11],
|
||||
'birth_date' => [2000,2,1,9,10,11],
|
||||
'birth_time' => [2000,2,1,9,10,11]
|
||||
}
|
||||
|
||||
describe "execute_callstack_for_multiparameter_attributes" do
|
||||
|
||||
describe "for valid values" do
|
||||
before do
|
||||
@callstack = {
|
||||
'birth_date_and_time' => [2000,2,1,9,10,11],
|
||||
'birth_date' => [2000,2,1,9,10,11],
|
||||
'birth_time' => [2000,2,1,9,10,11]
|
||||
}
|
||||
end
|
||||
|
||||
it "should store datetime string for datetime column" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-02-01 09:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
|
||||
it "should store date string for a date column" do
|
||||
obj.should_receive(:birth_date=).once.with("2000-02-01")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
|
||||
it "should store time string for a time column" do
|
||||
obj.should_receive(:birth_time=).once.with("09:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
end
|
||||
|
||||
it "should store datetime string for datetime column" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-02-01 09:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
|
||||
it "should store date string for a date column" do
|
||||
obj.should_receive(:birth_date=).once.with("2000-02-01")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
|
||||
describe "for invalid values" do
|
||||
before do
|
||||
@callstack = {
|
||||
'birth_date_and_time' => [2000,13,1,9,10,11],
|
||||
'birth_date' => [2000,2,41,9,10,11],
|
||||
'birth_time' => [2000,2,1,25,10,11]
|
||||
}
|
||||
end
|
||||
|
||||
it "should store invalid datetime string for datetime column" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-13-01 09:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
|
||||
it "should store invalid date string for a date column" do
|
||||
obj.should_receive(:birth_date=).once.with("2000-02-41")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
|
||||
it "should store invalid time string for a time column" do
|
||||
obj.should_receive(:birth_time=).once.with("25:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
end
|
||||
end
|
||||
|
||||
it "should store time string for a time column" do
|
||||
obj.should_receive(:birth_time=).once.with("09:10:11")
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, @callstack)
|
||||
|
||||
describe "for missing values" do
|
||||
it "should store nil if all datetime values nil" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with(nil)
|
||||
callstack = { 'birth_date_and_time' => [nil,nil,nil,nil,nil,nil] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
|
||||
it "should store nil year as empty value in string" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("-02-01 09:10:11")
|
||||
callstack = { 'birth_date_and_time' => [nil,2,1,9,10,11] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
|
||||
it "should store nil month as empty value in string" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000--01 09:10:11")
|
||||
callstack = { 'birth_date_and_time' => [2000,nil,1,9,10,11] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
|
||||
it "should store nil day as empty value in string" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-02- 09:10:11")
|
||||
callstack = { 'birth_date_and_time' => [2000,2,nil,9,10,11] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
|
||||
it "should store nil hour as empty value in string" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-02-01 :10:11")
|
||||
callstack = { 'birth_date_and_time' => [2000,2,1,nil,10,11] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
|
||||
it "should store nil minute as empty value in string" do
|
||||
obj.should_receive(:birth_date_and_time=).once.with("2000-02-01 09:10:")
|
||||
callstack = { 'birth_date_and_time' => [2000,2,1,9,10,nil] }
|
||||
obj.send(:execute_callstack_for_multiparameter_attributes, callstack)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def time_array_to_string(*args)
|
||||
ValidatesTimeliness::ActiveRecord.time_array_to_string(*args)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -13,7 +13,7 @@ if vendored = File.exists?(vendored_rails)
|
||||
Dir.glob(vendored_rails + "/**/lib").each { |dir| $:.unshift dir }
|
||||
else
|
||||
begin
|
||||
require 'ginger'
|
||||
require 'ginger'
|
||||
rescue LoadError
|
||||
end
|
||||
if ENV['VERSION']
|
||||
@@ -47,6 +47,8 @@ end
|
||||
require 'validates_timeliness'
|
||||
require 'validates_timeliness/matcher'
|
||||
|
||||
ValidatesTimeliness.enable_datetime_select_extension!
|
||||
|
||||
ActiveRecord::Migration.verbose = false
|
||||
ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user