diff options
author | rick <rick@spacemonkey.local> | 2008-04-23 12:14:59 -0700 |
---|---|---|
committer | rick <rick@spacemonkey.local> | 2008-04-23 12:14:59 -0700 |
commit | eacb5cf0cab6447db78085c8bda6c94dd329ce6b (patch) | |
tree | df4bc7789c4d1fe83085b725be0d1fe4a6223880 /activeresource/test | |
parent | 69d29e80f76079262f2e98e350592be1cfdfcd1e (diff) | |
parent | 6c1c16bfd9eb865dffa68c12c7df66d5a59a8714 (diff) | |
download | rails-eacb5cf0cab6447db78085c8bda6c94dd329ce6b.tar.gz rails-eacb5cf0cab6447db78085c8bda6c94dd329ce6b.tar.bz2 rails-eacb5cf0cab6447db78085c8bda6c94dd329ce6b.zip |
Merge branch 'master' of git@github.com:rails/rails
Diffstat (limited to 'activeresource/test')
-rw-r--r-- | activeresource/test/abstract_unit.rb | 14 | ||||
-rw-r--r-- | activeresource/test/base_test.rb | 66 | ||||
-rw-r--r-- | activeresource/test/connection_test.rb | 14 |
3 files changed, 93 insertions, 1 deletions
diff --git a/activeresource/test/abstract_unit.rb b/activeresource/test/abstract_unit.rb index db1e0b9535..615a6d9222 100644 --- a/activeresource/test/abstract_unit.rb +++ b/activeresource/test/abstract_unit.rb @@ -7,4 +7,16 @@ require 'active_resource/http_mock' $:.unshift "#{File.dirname(__FILE__)}/../test" require 'setter_trap' -ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/debug.log")
\ No newline at end of file +ActiveResource::Base.logger = Logger.new("#{File.dirname(__FILE__)}/debug.log") + +# Wrap tests that use Mocha and skip if unavailable. +def uses_mocha(test_name) + unless Object.const_defined?(:Mocha) + require 'mocha' + require 'stubba' + end + yield +rescue LoadError => load_error + raise unless load_error.message =~ /mocha/i + $stderr.puts "Skipping #{test_name} tests. `gem install mocha` and try again." +end
\ No newline at end of file diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb index 9caca803b7..9e2f6c1831 100644 --- a/activeresource/test/base_test.rb +++ b/activeresource/test/base_test.rb @@ -88,6 +88,12 @@ class BaseTest < Test::Unit::TestCase assert_equal('test123', Forum.connection.password) end + def test_should_accept_setting_timeout + Forum.timeout = 5 + assert_equal(5, Forum.timeout) + assert_equal(5, Forum.connection.timeout) + end + def test_user_variable_can_be_reset actor = Class.new(ActiveResource::Base) actor.site = 'http://cinema' @@ -108,6 +114,16 @@ class BaseTest < Test::Unit::TestCase assert_nil actor.connection.password end + def test_timeout_variable_can_be_reset + actor = Class.new(ActiveResource::Base) + actor.site = 'http://cinema' + assert_nil actor.timeout + actor.timeout = 5 + actor.timeout = nil + assert_nil actor.timeout + assert_nil actor.connection.timeout + end + def test_credentials_from_site_are_decoded actor = Class.new(ActiveResource::Base) actor.site = 'http://my%40email.com:%31%32%33@cinema' @@ -232,6 +248,40 @@ class BaseTest < Test::Unit::TestCase assert_equal fruit.password, apple.password, 'subclass did not adopt changes from parent class' end + def test_timeout_reader_uses_superclass_timeout_until_written + # Superclass is Object so returns nil. + assert_nil ActiveResource::Base.timeout + assert_nil Class.new(ActiveResource::Base).timeout + Person.timeout = 5 + + # Subclass uses superclass timeout. + actor = Class.new(Person) + assert_equal Person.timeout, actor.timeout + + # Changing subclass timeout doesn't change superclass timeout. + actor.timeout = 10 + assert_not_equal Person.timeout, actor.timeout + + # Changing superclass timeout doesn't overwrite subclass timeout. + Person.timeout = 15 + assert_not_equal Person.timeout, actor.timeout + + # Changing superclass timeout after subclassing changes subclass timeout. + jester = Class.new(actor) + actor.timeout = 20 + assert_equal actor.timeout, jester.timeout + + # Subclasses are always equal to superclass timeout when not overridden. + fruit = Class.new(ActiveResource::Base) + apple = Class.new(fruit) + + fruit.timeout = 25 + assert_equal fruit.timeout, apple.timeout, 'subclass did not adopt changes from parent class' + + fruit.timeout = 30 + assert_equal fruit.timeout, apple.timeout, 'subclass did not adopt changes from 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) @@ -279,6 +329,22 @@ class BaseTest < Test::Unit::TestCase assert_not_equal(first_connection, second_connection, 'Connection should be re-created') end + def test_updating_baseclass_timeout_wipes_descendent_cached_connection_objects + # Subclasses are always equal to superclass timeout when not overridden + fruit = Class.new(ActiveResource::Base) + apple = Class.new(fruit) + fruit.site = 'http://market' + + fruit.timeout = 5 + assert_equal fruit.connection.timeout, apple.connection.timeout + first_connection = apple.connection.object_id + + fruit.timeout = 10 + assert_equal fruit.connection.timeout, apple.connection.timeout + second_connection = apple.connection.object_id + assert_not_equal(first_connection, second_connection, 'Connection should be re-created') + end + def test_collection_name assert_equal "people", Person.collection_name end diff --git a/activeresource/test/connection_test.rb b/activeresource/test/connection_test.rb index 38fdbd3b2f..8e43e451ff 100644 --- a/activeresource/test/connection_test.rb +++ b/activeresource/test/connection_test.rb @@ -101,6 +101,11 @@ class ConnectionTest < Test::Unit::TestCase assert_equal site, @conn.site end + def test_timeout_accessor + @conn.timeout = 5 + assert_equal 5, @conn.timeout + end + def test_get matz = @conn.get("/people/1.xml") assert_equal "Matz", matz["name"] @@ -163,6 +168,15 @@ class ConnectionTest < Test::Unit::TestCase assert_equal 200, response.code end + uses_mocha('test_timeout') do + def test_timeout + @http = mock('new Net::HTTP') + @conn.expects(:http).returns(@http) + @http.expects(:get).raises(Timeout::Error, 'execution expired') + assert_raises(ActiveResource::TimeoutError) { @conn.get('/people_timeout.xml') } + end + end + protected def assert_response_raises(klass, code) assert_raise(klass, "Expected response code #{code} to raise #{klass}") do |