diff --git a/lib/validates_timeliness.rb b/lib/validates_timeliness.rb index 5a48279..2947dac 100644 --- a/lib/validates_timeliness.rb +++ b/lib/validates_timeliness.rb @@ -42,7 +42,7 @@ module ValidatesTimeliness # Setup method for plugin configuration def self.setup yield self - extend_orms.each {|orm| require "validates_timeliness/orms/#{orm}" } + extend_orms.each {|orm| require "validates_timeliness/orm/#{orm}" } end end diff --git a/lib/validates_timeliness/orms/active_record.rb b/lib/validates_timeliness/orm/active_record.rb similarity index 100% rename from lib/validates_timeliness/orms/active_record.rb rename to lib/validates_timeliness/orm/active_record.rb diff --git a/spec/validates_timeliness/attribute_methods_spec.rb b/spec/validates_timeliness/attribute_methods_spec.rb index cf5366e..55e6161 100644 --- a/spec/validates_timeliness/attribute_methods_spec.rb +++ b/spec/validates_timeliness/attribute_methods_spec.rb @@ -6,21 +6,26 @@ describe ValidatesTimeliness::AttributeMethods do end context "attribute write method" do - class EmployeeWithCache < ActiveRecord::Base - set_table_name 'employees' + class PersonWithCache + include TestModel + self.model_attributes = :birth_date, :birth_time, :birth_datetime + validates_date :birth_date + validates_time :birth_time validates_datetime :birth_datetime end it 'should cache attribute raw value' do - r = EmployeeWithCache.new + r = PersonWithCache.new r.birth_datetime = date_string = '2010-01-01' r._timeliness_raw_value_for(:birth_datetime).should == date_string end context "with plugin parser" do - class EmployeeWithParser < ActiveRecord::Base - set_table_name 'employees' + class PersonWithParser + include TestModel + self.model_attributes = :birth_date, :birth_time, :birth_datetime validates_date :birth_date + validates_time :birth_time validates_datetime :birth_datetime end @@ -30,12 +35,12 @@ describe ValidatesTimeliness::AttributeMethods do it 'should parse a string value' do ValidatesTimeliness::Parser.should_receive(:parse) - r = EmployeeWithParser.new + r = PersonWithParser.new r.birth_date = '2010-01-01' end it 'should parse string as current timezone' do - r = EmployeeWithParser.new + r = PersonWithParser.new r.birth_datetime = '2010-01-01 12:00' r.birth_datetime.zone == Time.zone.name end @@ -47,18 +52,8 @@ describe ValidatesTimeliness::AttributeMethods do end context "before_type_cast method" do - it 'should be defined on class if ORM supports it' do - Employee.instance_methods(false).should include("birth_datetime_before_type_cast") - end - it 'should not be defined if ORM does not support it' do Person.instance_methods(false).should_not include("birth_datetime_before_type_cast") end - - it 'should return original value' do - r = Employee.new - r.birth_datetime = date_string = '2010-01-01' - r.birth_datetime_before_type_cast.should == date_string - end end end diff --git a/spec/validates_timeliness/orm/active_record_spec.rb b/spec/validates_timeliness/orm/active_record_spec.rb new file mode 100644 index 0000000..041d4af --- /dev/null +++ b/spec/validates_timeliness/orm/active_record_spec.rb @@ -0,0 +1,60 @@ +require 'spec_helper' + +describe ValidatesTimeliness, 'ActiveRecord' do + it 'should define _timeliness_raw_value_for instance method' do + Employee.instance_methods.should include('_timeliness_raw_value_for') + end + + context "attribute write method" do + class EmployeeWithCache < ActiveRecord::Base + set_table_name 'employees' + validates_datetime :birth_datetime + end + + it 'should cache attribute raw value' do + r = EmployeeWithCache.new + r.birth_datetime = date_string = '2010-01-01' + r._timeliness_raw_value_for(:birth_datetime).should == date_string + end + + context "with plugin parser" do + class EmployeeWithParser < ActiveRecord::Base + set_table_name 'employees' + validates_date :birth_date + validates_datetime :birth_datetime + end + + before :all do + ValidatesTimeliness.use_plugin_parser = true + end + + it 'should parse a string value' do + ValidatesTimeliness::Parser.should_receive(:parse) + r = EmployeeWithParser.new + r.birth_date = '2010-01-01' + end + + it 'should parse string as current timezone' do + r = EmployeeWithParser.new + r.birth_datetime = '2010-01-01 12:00' + r.birth_datetime.zone == Time.zone.name + end + + after :all do + ValidatesTimeliness.use_plugin_parser = false + end + end + end + + context "before_type_cast method" do + it 'should be defined on class if ORM supports it' do + Employee.instance_methods(false).should include("birth_datetime_before_type_cast") + end + + it 'should return original value' do + r = Employee.new + r.birth_datetime = date_string = '2010-01-01' + r.birth_datetime_before_type_cast.should == date_string + end + end +end