aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/test/base_test.rb
diff options
context:
space:
mode:
authorTobias Lütke <tobias.luetke@gmail.com>2007-06-27 16:00:07 +0000
committerTobias Lütke <tobias.luetke@gmail.com>2007-06-27 16:00:07 +0000
commit80d539bd4daa180e0c792b3878b2250c9913c437 (patch)
tree5ac65d2512d5221fb565126a6caaf9a50a5cc579 /activeresource/test/base_test.rb
parent868e6b08df4b16fb71cc8a66308174253ff67bdb (diff)
downloadrails-80d539bd4daa180e0c792b3878b2250c9913c437.tar.gz
rails-80d539bd4daa180e0c792b3878b2250c9913c437.tar.bz2
rails-80d539bd4daa180e0c792b3878b2250c9913c437.zip
Fixes that using a subclass of an ARes object would cache a connection object based of its parent's site variable. Changing the parent's site would have no effect on the descentent objects.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7143 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activeresource/test/base_test.rb')
-rw-r--r--activeresource/test/base_test.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb
index 48b1045b61..2c6b7c648f 100644
--- a/activeresource/test/base_test.rb
+++ b/activeresource/test/base_test.rb
@@ -54,6 +54,14 @@ class BaseTest < Test::Unit::TestCase
assert_equal 'http://foo:bar@beast.caboo.se', Forum.site.to_s
assert_equal 'http://foo:bar@beast.caboo.se/forums/:forum_id', Topic.site.to_s
end
+
+ def test_site_variable_can_be_reset
+ actor = Class.new(ActiveResource::Base)
+ assert_nil actor.site
+ actor.site = 'http://localhost:31337'
+ actor.site = nil
+ assert_nil actor.site
+ end
def test_site_reader_uses_superclass_site_until_written
# Superclass is Object so returns nil.
@@ -84,6 +92,28 @@ class BaseTest < Test::Unit::TestCase
actor.site = 'http://nomad'
assert_equal actor.site, jester.site
assert jester.site.frozen?
+
+ # Subclasses are always equal to superclass site when not overridden
+ fruit = Class.new(ActiveResource::Base)
+ apple = Class.new(fruit)
+
+ fruit.site = 'http://market'
+ assert_equal fruit.site, apple.site, 'subclass did not adopt changes to parent class'
+
+ fruit.site = 'http://supermarket'
+ assert_equal fruit.site, apple.site, 'subclass did not adopt changes to parent class'
+ end
+
+ def test_updating_baseclass_site_object_wipes_descendent_cached_connection_objects
+ # Subclasses are always equal to superclass site when not overridden
+ fruit = Class.new(ActiveResource::Base)
+ apple = Class.new(fruit)
+
+ fruit.site = 'http://market'
+ assert_equal fruit.connection.site, apple.connection.site
+
+ fruit.site = 'http://supermarket'
+ assert_equal fruit.connection.site, apple.connection.site
end
def test_collection_name