mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-23 06:16:44 +00:00
use Person for non-ORM specific specs
This commit is contained in:
parent
48b42da85e
commit
29057c41f7
@ -14,12 +14,17 @@ module TestModel
|
|||||||
|
|
||||||
module ClassMethods
|
module ClassMethods
|
||||||
def define_method_attribute=(attr_name)
|
def define_method_attribute=(attr_name)
|
||||||
generated_attribute_methods.module_eval("def #{attr_name}=(new_value); @attributes['#{attr_name}']=new_value ; end", __FILE__, __LINE__)
|
generated_attribute_methods.module_eval("def #{attr_name}=(new_value); @attributes['#{attr_name}']=self.class.type_cast(new_value); end", __FILE__, __LINE__)
|
||||||
end
|
end
|
||||||
|
|
||||||
def define_method_attribute(attr_name)
|
def define_method_attribute(attr_name)
|
||||||
generated_attribute_methods.module_eval("def #{attr_name}; @attributes['#{attr_name}']; end", __FILE__, __LINE__)
|
generated_attribute_methods.module_eval("def #{attr_name}; @attributes['#{attr_name}']; end", __FILE__, __LINE__)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def type_cast(value)
|
||||||
|
return value unless value.is_a?(String)
|
||||||
|
value.to_time rescue nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
module DynamicMethods
|
module DynamicMethods
|
||||||
|
|||||||
@ -2,17 +2,20 @@ require 'spec_helper'
|
|||||||
|
|
||||||
describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
||||||
include ActionView::Helpers::DateHelper
|
include ActionView::Helpers::DateHelper
|
||||||
|
attr_reader :person, :params
|
||||||
|
|
||||||
attr_reader :employee, :params
|
before :all do
|
||||||
|
ValidatesTimeliness.use_plugin_parser = true
|
||||||
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@employee = Employee.new
|
@person = Person.new
|
||||||
@params = {}
|
@params = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "datetime_select" do
|
describe "datetime_select" do
|
||||||
it "should use param values when attribute is nil" do
|
it "should use param values when attribute is nil" do
|
||||||
params["employee"] = {
|
params["person"] = {
|
||||||
"birth_datetime(1i)" => 2009,
|
"birth_datetime(1i)" => 2009,
|
||||||
"birth_datetime(2i)" => 2,
|
"birth_datetime(2i)" => 2,
|
||||||
"birth_datetime(3i)" => 29,
|
"birth_datetime(3i)" => 29,
|
||||||
@ -20,18 +23,18 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
|||||||
"birth_datetime(5i)" => 13,
|
"birth_datetime(5i)" => 13,
|
||||||
"birth_datetime(6i)" => 14,
|
"birth_datetime(6i)" => 14,
|
||||||
}
|
}
|
||||||
employee.birth_datetime = nil
|
person.birth_datetime = nil
|
||||||
output = datetime_select(:employee, :birth_datetime, :include_blank => true, :include_seconds => true)
|
output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_datetime_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_datetime_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_2i] option[selected=selected]', 'February')
|
output.should have_tag('select[id=person_birth_datetime_2i] option[selected=selected]', 'February')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_3i] option[selected=selected]', '29')
|
output.should have_tag('select[id=person_birth_datetime_3i] option[selected=selected]', '29')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_datetime_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_datetime_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_datetime_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should override object values and use params if present" do
|
it "should override object values and use params if present" do
|
||||||
params["employee"] = {
|
params["person"] = {
|
||||||
"birth_datetime(1i)" => 2009,
|
"birth_datetime(1i)" => 2009,
|
||||||
"birth_datetime(2i)" => 2,
|
"birth_datetime(2i)" => 2,
|
||||||
"birth_datetime(3i)" => 29,
|
"birth_datetime(3i)" => 29,
|
||||||
@ -39,101 +42,101 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
|||||||
"birth_datetime(5i)" => 13,
|
"birth_datetime(5i)" => 13,
|
||||||
"birth_datetime(6i)" => 14,
|
"birth_datetime(6i)" => 14,
|
||||||
}
|
}
|
||||||
employee.birth_datetime = "2010-01-01 15:16:17"
|
person.birth_datetime = "2010-01-01 15:16:17"
|
||||||
output = datetime_select(:employee, :birth_datetime, :include_blank => true, :include_seconds => true)
|
output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_datetime_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_datetime_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_2i] option[selected=selected]', 'February')
|
output.should have_tag('select[id=person_birth_datetime_2i] option[selected=selected]', 'February')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_3i] option[selected=selected]', '29')
|
output.should have_tag('select[id=person_birth_datetime_3i] option[selected=selected]', '29')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_datetime_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_datetime_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_datetime_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should use attribute values from object if no params" do
|
it "should use attribute values from object if no params" do
|
||||||
employee.birth_datetime = "2009-01-02 12:13:14"
|
person.birth_datetime = "2009-01-02 12:13:14"
|
||||||
output = datetime_select(:employee, :birth_datetime, :include_blank => true, :include_seconds => true)
|
output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_datetime_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_datetime_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_2i] option[selected=selected]', 'January')
|
output.should have_tag('select[id=person_birth_datetime_2i] option[selected=selected]', 'January')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_3i] option[selected=selected]', '2')
|
output.should have_tag('select[id=person_birth_datetime_3i] option[selected=selected]', '2')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_datetime_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_datetime_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_datetime_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should use attribute values if params does not contain attribute params" do
|
it "should use attribute values if params does not contain attribute params" do
|
||||||
employee.birth_datetime = "2009-01-02 12:13:14"
|
person.birth_datetime = "2009-01-02 12:13:14"
|
||||||
params["employee"] = { }
|
params["person"] = { }
|
||||||
output = datetime_select(:employee, :birth_datetime, :include_blank => true, :include_seconds => true)
|
output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_datetime_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_datetime_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_2i] option[selected=selected]', 'January')
|
output.should have_tag('select[id=person_birth_datetime_2i] option[selected=selected]', 'January')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_3i] option[selected=selected]', '2')
|
output.should have_tag('select[id=person_birth_datetime_3i] option[selected=selected]', '2')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_datetime_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_datetime_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_datetime_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_datetime_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not select values when attribute value is nil and has no param values" do
|
it "should not select values when attribute value is nil and has no param values" do
|
||||||
employee.birth_datetime = nil
|
person.birth_datetime = nil
|
||||||
output = datetime_select(:employee, :birth_datetime, :include_blank => true, :include_seconds => true)
|
output = datetime_select(:person, :birth_datetime, :include_blank => true, :include_seconds => true)
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_1i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_1i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_2i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_2i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_3i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_3i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_4i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_4i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_5i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_5i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_datetime_6i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_datetime_6i] option[selected=selected]')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "date_select" do
|
describe "date_select" do
|
||||||
it "should use param values when attribute is nil" do
|
it "should use param values when attribute is nil" do
|
||||||
params["employee"] = {
|
params["person"] = {
|
||||||
"birth_date(1i)" => 2009,
|
"birth_date(1i)" => 2009,
|
||||||
"birth_date(2i)" => 2,
|
"birth_date(2i)" => 2,
|
||||||
"birth_date(3i)" => 29,
|
"birth_date(3i)" => 29,
|
||||||
}
|
}
|
||||||
employee.birth_date = nil
|
person.birth_date = nil
|
||||||
output = date_select(:employee, :birth_date, :include_blank => true, :include_seconds => true)
|
output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_date_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_date_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_date_2i] option[selected=selected]', 'February')
|
output.should have_tag('select[id=person_birth_date_2i] option[selected=selected]', 'February')
|
||||||
output.should have_tag('select[id=employee_birth_date_3i] option[selected=selected]', '29')
|
output.should have_tag('select[id=person_birth_date_3i] option[selected=selected]', '29')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should override object values and use params if present" do
|
it "should override object values and use params if present" do
|
||||||
params["employee"] = {
|
params["person"] = {
|
||||||
"birth_date(1i)" => 2009,
|
"birth_date(1i)" => 2009,
|
||||||
"birth_date(2i)" => 2,
|
"birth_date(2i)" => 2,
|
||||||
"birth_date(3i)" => 29,
|
"birth_date(3i)" => 29,
|
||||||
}
|
}
|
||||||
employee.birth_date = "2009-03-01"
|
person.birth_date = "2009-03-01"
|
||||||
output = date_select(:employee, :birth_date, :include_blank => true, :include_seconds => true)
|
output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_date_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_date_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_date_2i] option[selected=selected]', 'February')
|
output.should have_tag('select[id=person_birth_date_2i] option[selected=selected]', 'February')
|
||||||
output.should have_tag('select[id=employee_birth_date_3i] option[selected=selected]', '29')
|
output.should have_tag('select[id=person_birth_date_3i] option[selected=selected]', '29')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should select attribute values from object if no params" do
|
it "should select attribute values from object if no params" do
|
||||||
employee.birth_date = "2009-01-02"
|
person.birth_date = "2009-01-02"
|
||||||
output = date_select(:employee, :birth_date, :include_blank => true, :include_seconds => true)
|
output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_date_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_date_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_date_2i] option[selected=selected]', 'January')
|
output.should have_tag('select[id=person_birth_date_2i] option[selected=selected]', 'January')
|
||||||
output.should have_tag('select[id=employee_birth_date_3i] option[selected=selected]', '2')
|
output.should have_tag('select[id=person_birth_date_3i] option[selected=selected]', '2')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should select attribute values if params does not contain attribute params" do
|
it "should select attribute values if params does not contain attribute params" do
|
||||||
employee.birth_date = "2009-01-02"
|
person.birth_date = "2009-01-02"
|
||||||
params["employee"] = { }
|
params["person"] = { }
|
||||||
output = date_select(:employee, :birth_date, :include_blank => true, :include_seconds => true)
|
output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_date_1i] option[selected=selected]', '2009')
|
output.should have_tag('select[id=person_birth_date_1i] option[selected=selected]', '2009')
|
||||||
output.should have_tag('select[id=employee_birth_date_2i] option[selected=selected]', 'January')
|
output.should have_tag('select[id=person_birth_date_2i] option[selected=selected]', 'January')
|
||||||
output.should have_tag('select[id=employee_birth_date_3i] option[selected=selected]', '2')
|
output.should have_tag('select[id=person_birth_date_3i] option[selected=selected]', '2')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not select values when attribute value is nil and has no param values" do
|
it "should not select values when attribute value is nil and has no param values" do
|
||||||
employee.birth_date = nil
|
person.birth_date = nil
|
||||||
output = date_select(:employee, :birth_date, :include_blank => true, :include_seconds => true)
|
output = date_select(:person, :birth_date, :include_blank => true, :include_seconds => true)
|
||||||
output.should_not have_tag('select[id=employee_birth_date_1i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_date_1i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_date_2i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_date_2i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_date_3i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_date_3i] option[selected=selected]')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -143,7 +146,7 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "should use param values when attribute is nil" do
|
it "should use param values when attribute is nil" do
|
||||||
params["employee"] = {
|
params["person"] = {
|
||||||
"birth_time(1i)" => 2000,
|
"birth_time(1i)" => 2000,
|
||||||
"birth_time(2i)" => 1,
|
"birth_time(2i)" => 1,
|
||||||
"birth_time(3i)" => 1,
|
"birth_time(3i)" => 1,
|
||||||
@ -151,28 +154,31 @@ describe ValidatesTimeliness::Extensions::DateTimeSelect do
|
|||||||
"birth_time(5i)" => 13,
|
"birth_time(5i)" => 13,
|
||||||
"birth_time(6i)" => 14,
|
"birth_time(6i)" => 14,
|
||||||
}
|
}
|
||||||
employee.birth_time = nil
|
person.birth_time = nil
|
||||||
output = time_select(:employee, :birth_time, :include_blank => true, :include_seconds => true)
|
output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_time_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_time_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_time_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_time_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_time_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_time_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should select attribute values from object if no params" do
|
it "should select attribute values from object if no params" do
|
||||||
employee.birth_time = "2000-01-01 12:13:14"
|
person.birth_time = "2000-01-01 12:13:14"
|
||||||
output = time_select(:employee, :birth_time, :include_blank => true, :include_seconds => true)
|
output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
|
||||||
output.should have_tag('select[id=employee_birth_time_4i] option[selected=selected]', '12')
|
output.should have_tag('select[id=person_birth_time_4i] option[selected=selected]', '12')
|
||||||
output.should have_tag('select[id=employee_birth_time_5i] option[selected=selected]', '13')
|
output.should have_tag('select[id=person_birth_time_5i] option[selected=selected]', '13')
|
||||||
output.should have_tag('select[id=employee_birth_time_6i] option[selected=selected]', '14')
|
output.should have_tag('select[id=person_birth_time_6i] option[selected=selected]', '14')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not select values when attribute value is nil and has no param values" do
|
it "should not select values when attribute value is nil and has no param values" do
|
||||||
employee.birth_time = nil
|
person.birth_time = nil
|
||||||
output = time_select(:employee, :birth_time, :include_blank => true, :include_seconds => true)
|
output = time_select(:person, :birth_time, :include_blank => true, :include_seconds => true)
|
||||||
output.should_not have_tag('select[id=employee_birth_time_4i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_time_4i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_time_5i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_time_5i] option[selected=selected]')
|
||||||
output.should_not have_tag('select[id=employee_birth_time_6i] option[selected=selected]')
|
output.should_not have_tag('select[id=person_birth_time_6i] option[selected=selected]')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
after :all do
|
||||||
|
ValidatesTimeliness.use_plugin_parser = false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -14,7 +14,7 @@ describe ValidatesTimeliness::HelperMethods do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should validate instance when validation method called' do
|
it 'should validate instance when validation method called' do
|
||||||
r = Employee.new
|
r = Person.new
|
||||||
r.validates_date :birth_date
|
r.validates_date :birth_date
|
||||||
r.errors[:birth_date].should_not be_empty
|
r.errors[:birth_date].should_not be_empty
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user