diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2006-12-21 22:12:21 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2006-12-21 22:12:21 +0000 |
commit | e6988ef2ce31553c9c5f52a8d34899e39df67694 (patch) | |
tree | 88d64ef6f940fa3e8efe09e8ee0719dd2ff78da7 /activeresource/test/base_test.rb | |
parent | 93c816f0c2ad45ef898de7c2dd2987f9ccb02678 (diff) | |
download | rails-e6988ef2ce31553c9c5f52a8d34899e39df67694.tar.gz rails-e6988ef2ce31553c9c5f52a8d34899e39df67694.tar.bz2 rails-e6988ef2ce31553c9c5f52a8d34899e39df67694.zip |
Subclasses share superclass site until explicitly set. This way you can set Superclass.site = ... after subclasses have been defined.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5767 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activeresource/test/base_test.rb')
-rw-r--r-- | activeresource/test/base_test.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb index e0bbdc00bf..ad799806e5 100644 --- a/activeresource/test/base_test.rb +++ b/activeresource/test/base_test.rb @@ -43,6 +43,36 @@ class BaseTest < Test::Unit::TestCase assert_equal site, Person.site end + def test_site_reader_uses_superclass_site_until_written + # Superclass is Object so returns nil. + assert_nil ActiveResource::Base.site + assert_nil Class.new(ActiveResource::Base).site + + # Subclass uses superclass site. + actor = Class.new(Person) + assert_equal Person.site, actor.site + + # Subclass returns frozen superclass copy. + assert !Person.site.frozen? + assert actor.site.frozen? + + # Changing subclass site doesn't change superclass site. + actor.site = 'http://localhost:31337' + assert_not_equal Person.site, actor.site + + # Changed subclass site is not frozen. + assert !actor.site.frozen? + + # Changing superclass site doesn't overwrite subclass site. + Person.site = 'http://somewhere.else' + assert_not_equal Person.site, actor.site + + # Changing superclass site after subclassing changes subclass site. + jester = Class.new(actor) + actor.site = 'http://nomad' + assert_equal actor.site, jester.site + assert jester.site.frozen? + end def test_collection_name assert_equal "people", Person.collection_name |