mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:01 -05:00
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.
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user