aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRasik Pandey <rbpandey@gmail.com>2009-01-28 19:39:06 +0000
committerPratik Naik <pratiknaik@gmail.com>2009-01-28 19:39:06 +0000
commit6079ec1f77daf364a2b25cf651e9b3c9e1b95a16 (patch)
tree229921115599ceaf9fe33e17228ee2541f18970a
parent9a8e2a059c823498e0fb318f25b926a6d015ef87 (diff)
downloadrails-6079ec1f77daf364a2b25cf651e9b3c9e1b95a16.tar.gz
rails-6079ec1f77daf364a2b25cf651e9b3c9e1b95a16.tar.bz2
rails-6079ec1f77daf364a2b25cf651e9b3c9e1b95a16.zip
ActiveResource#eqls? and == should not take into account object identity and prefix options should be considered. [#1098 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
-rw-r--r--activeresource/lib/active_resource/base.rb4
-rw-r--r--activeresource/test/base/equality_test.rb9
2 files changed, 11 insertions, 2 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index 4192fab525..54dde43087 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -746,8 +746,8 @@ module ActiveResource
# # => true
#
def ==(other)
- other.equal?(self) || (other.instance_of?(self.class) && !other.new? && other.id == id)
- end
+ other.equal?(self) || (other.instance_of?(self.class) && other.id == id && other.prefix_options == prefix_options)
+ end
# Tests for equality (delegates to ==).
def eql?(other)
diff --git a/activeresource/test/base/equality_test.rb b/activeresource/test/base/equality_test.rb
index 1fb8938e95..84f1a7b998 100644
--- a/activeresource/test/base/equality_test.rb
+++ b/activeresource/test/base/equality_test.rb
@@ -40,4 +40,13 @@ class BaseEqualityTest < Test::Unit::TestCase
assert_equal resource.id.hash, resource.hash
end
end
+
+ def test_with_prefix_options
+ assert_equal @one == @one, @one.eql?(@one)
+ assert_equal @one == @one.dup, @one.eql?(@one.dup)
+ new_one = @one.dup
+ new_one.prefix_options = {:foo => 'bar'}
+ assert_not_equal @one, new_one
+ end
+
end