aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource
diff options
context:
space:
mode:
Diffstat (limited to 'activeresource')
-rw-r--r--activeresource/lib/active_resource/base.rb6
-rw-r--r--activeresource/test/base/equality_test.rb9
-rw-r--r--activeresource/test/base_test.rb15
3 files changed, 26 insertions, 4 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index 4192fab525..94418fb559 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)
@@ -1006,7 +1006,7 @@ module ActiveResource
# Takes a response from a typical create post and pulls the ID out
def id_from_response(response)
- response['Location'][/\/([^\/]*?)(\.\w+)?$/, 1]
+ response['Location'][/\/([^\/]*?)(\.\w+)?$/, 1] if response['Location']
end
def element_path(options = nil)
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
diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb
index d37a6d4ed2..e22388f4a7 100644
--- a/activeresource/test/base_test.rb
+++ b/activeresource/test/base_test.rb
@@ -627,6 +627,12 @@ class BaseTest < Test::Unit::TestCase
assert_equal '1', p.__send__(:id_from_response, resp)
end
+ def test_id_from_response_without_location
+ p = Person.new
+ resp = {}
+ assert_equal nil, p.__send__(:id_from_response, resp)
+ end
+
def test_create_with_custom_prefix
matzs_house = StreetAddress.new(:person_id => 1)
matzs_house.save
@@ -670,7 +676,6 @@ class BaseTest < Test::Unit::TestCase
assert_equal person, person.reload
end
-
def test_create
rick = Person.create(:name => 'Rick')
assert rick.valid?
@@ -687,6 +692,14 @@ class BaseTest < Test::Unit::TestCase
assert_raises(ActiveResource::ResourceConflict) { Person.create(:name => 'Rick') }
end
+ def test_create_without_location
+ ActiveResource::HttpMock.respond_to do |mock|
+ mock.post "/people.xml", {}, nil, 201
+ end
+ person = Person.create(:name => 'Rick')
+ assert_equal nil, person.id
+ end
+
def test_clone
matz = Person.find(1)
matz_c = matz.clone