aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test
diff options
context:
space:
mode:
authorPaweł Kondzior <pawel@kondzior.com>2012-01-16 23:52:55 -0800
committerPaweł Kondzior <pawel@kondzior.com>2012-01-16 23:56:55 -0800
commit7021184f9cd385bc7f7c7bedf6ce871806b1981e (patch)
tree034aa5ce3525bcbd223233f467973a998c63a2f0 /activemodel/test
parentf9275e54e0a9462ccbf8d19639232c5cd0fe1348 (diff)
downloadrails-7021184f9cd385bc7f7c7bedf6ce871806b1981e.tar.gz
rails-7021184f9cd385bc7f7c7bedf6ce871806b1981e.tar.bz2
rails-7021184f9cd385bc7f7c7bedf6ce871806b1981e.zip
Fix ActiveModel::Errors#dup
Since ActiveModel::Errors instance keeps all error messages as hash we should duplicate this object as well. Previously ActiveModel::Errors was a subclass of ActiveSupport::OrderedHash, which results in different behavior on dup, this may result in regression for people relying on it. Because Rails 3.2 stills supports Ruby 1.8.7 in order to properly fix this regression we need to backport #initialize_dup.
Diffstat (limited to 'activemodel/test')
-rw-r--r--activemodel/test/cases/errors_test.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/activemodel/test/cases/errors_test.rb b/activemodel/test/cases/errors_test.rb
index 8361069819..e2dea12589 100644
--- a/activemodel/test/cases/errors_test.rb
+++ b/activemodel/test/cases/errors_test.rb
@@ -46,6 +46,14 @@ class ErrorsTest < ActiveModel::TestCase
assert errors.has_key?(:foo), 'errors should have key :foo'
end
+ def test_dup
+ errors = ActiveModel::Errors.new(self)
+ errors[:foo] = 'bar'
+ errors_dup = errors.dup
+ errors_dup[:bar] = 'omg'
+ assert_not_same errors_dup.messages, errors.messages
+ end
+
test "should return true if no errors" do
person = Person.new
person.errors[:foo]