fix generated_methods bug where read instead of write method stored

existing spec failed unless run alone as attribute methods already
primed. fixed spec to undef method and empty generated_methods set
This commit is contained in:
Adam Meehan 2009-12-29 11:13:15 +11:00
parent 694c3b0ce3
commit 59d9957ab6
2 changed files with 6 additions and 3 deletions

View File

@ -51,10 +51,11 @@ module ValidatesTimeliness
if [:date, :time, :datetime].include?(column.type)
time_zone_aware = create_time_zone_conversion_attribute?(name, column) rescue false
define_method("#{name}=") do |value|
method_name = "#{name}="
define_method(method_name) do |value|
write_date_time_attribute(name, value, column.type, time_zone_aware)
end
timeliness_methods << name
timeliness_methods << method_name
end
end

View File

@ -5,7 +5,9 @@ describe ValidatesTimeliness::ActiveRecord::AttributeMethods do
@person = Person.new
end
it "should call write_date_time_attribute when date attribute assigned value" do
it "should define and call write method on first assign" do
Person.class_eval { @generated_methods = Set.new }
Person.send(:undef_method, :birth_date=)
@person.should_receive(:write_date_time_attribute)
@person.birth_date = "2000-01-01"
end