diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-06-10 14:01:05 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-11-07 01:16:06 -0500 |
commit | 7b28a55a2bc9bedd5a8c8dec0a8a02166927ef16 (patch) | |
tree | c1378f3c30fbff6ae623f148aa109e2ee956fc9e | |
parent | 983dc8078708fff5d99fc31eb5eac8b532e950b3 (diff) | |
download | rails-7b28a55a2bc9bedd5a8c8dec0a8a02166927ef16.tar.gz rails-7b28a55a2bc9bedd5a8c8dec0a8a02166927ef16.tar.bz2 rails-7b28a55a2bc9bedd5a8c8dec0a8a02166927ef16.zip |
Remove direct TestCase mixins. Add miniunit compatibility.
-rw-r--r-- | activesupport/lib/active_support/deprecation.rb | 33 | ||||
-rw-r--r-- | activesupport/lib/active_support/test_case.rb | 10 | ||||
-rw-r--r-- | activesupport/lib/active_support/testing/assertions.rb | 61 | ||||
-rw-r--r-- | activesupport/test/deprecation_test.rb | 2 | ||||
-rw-r--r-- | activesupport/test/test_test.rb | 4 |
5 files changed, 91 insertions, 19 deletions
diff --git a/activesupport/lib/active_support/deprecation.rb b/activesupport/lib/active_support/deprecation.rb index b4d8f61b8c..b3ad599371 100644 --- a/activesupport/lib/active_support/deprecation.rb +++ b/activesupport/lib/active_support/deprecation.rb @@ -221,23 +221,30 @@ class Module include ActiveSupport::Deprecation::ClassMethods end -require 'test/unit/error' -module Test - module Unit - class TestCase - include ActiveSupport::Deprecation::Assertions - end +require 'active_support/test_case' + +class ActiveSupport::TestCase + include ActiveSupport::Deprecation::Assertions +end + +begin + require 'test/unit/error' - class Error # :nodoc: - # Silence warnings when reporting test errors. - def message_with_silenced_deprecation - ActiveSupport::Deprecation.silence do - message_without_silenced_deprecation + module Test + module Unit + class Error # :nodoc: + # Silence warnings when reporting test errors. + def message_with_silenced_deprecation + ActiveSupport::Deprecation.silence do + message_without_silenced_deprecation + end end - end - alias_method_chain :message, :silenced_deprecation + alias_method_chain :message, :silenced_deprecation + end end end +rescue LoadError + # Using miniunit, ignore. end diff --git a/activesupport/lib/active_support/test_case.rb b/activesupport/lib/active_support/test_case.rb index 197e73b3e8..cdd884f918 100644 --- a/activesupport/lib/active_support/test_case.rb +++ b/activesupport/lib/active_support/test_case.rb @@ -1,10 +1,14 @@ require 'test/unit/testcase' +require 'active_support/testing/setup_and_teardown' +require 'active_support/testing/assertions' require 'active_support/testing/default' -require 'active_support/testing/core_ext/test' - module ActiveSupport - class TestCase < Test::Unit::TestCase + class TestCase < ::Test::Unit::TestCase + include ActiveSupport::Testing::SetupAndTeardown + include ActiveSupport::Testing::Assertions + include ActiveSupport::Testing::Default + # test "verify something" do # ... # end diff --git a/activesupport/lib/active_support/testing/assertions.rb b/activesupport/lib/active_support/testing/assertions.rb new file mode 100644 index 0000000000..7665d9217e --- /dev/null +++ b/activesupport/lib/active_support/testing/assertions.rb @@ -0,0 +1,61 @@ +module ActiveSupport + module Testing + module Assertions + # Test numeric difference between the return value of an expression as a result of what is evaluated + # in the yielded block. + # + # assert_difference 'Article.count' do + # post :create, :article => {...} + # end + # + # An arbitrary expression is passed in and evaluated. + # + # assert_difference 'assigns(:article).comments(:reload).size' do + # post :create, :comment => {...} + # end + # + # An arbitrary positive or negative difference can be specified. The default is +1. + # + # assert_difference 'Article.count', -1 do + # post :delete, :id => ... + # end + # + # An array of expressions can also be passed in and evaluated. + # + # assert_difference [ 'Article.count', 'Post.count' ], +2 do + # post :create, :article => {...} + # end + # + # A error message can be specified. + # + # assert_difference 'Article.count', -1, "An Article should be destroyed" do + # post :delete, :id => ... + # end + def assert_difference(expressions, difference = 1, message = nil, &block) + expression_evaluations = Array(expressions).collect{ |expression| lambda { eval(expression, block.send!(:binding)) } } + + original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call } + yield + expression_evaluations.each_with_index do |expression, i| + assert_equal original_values[i] + difference, expression.call, message + end + end + + # Assertion that the numeric result of evaluating an expression is not changed before and after + # invoking the passed in block. + # + # assert_no_difference 'Article.count' do + # post :create, :article => invalid_attributes + # end + # + # A error message can be specified. + # + # assert_no_difference 'Article.count', "An Article should not be destroyed" do + # post :create, :article => invalid_attributes + # end + def assert_no_difference(expressions, message = nil, &block) + assert_difference expressions, 0, message, &block + end + end + end +end diff --git a/activesupport/test/deprecation_test.rb b/activesupport/test/deprecation_test.rb index 27e9573ce2..5697ab26af 100644 --- a/activesupport/test/deprecation_test.rb +++ b/activesupport/test/deprecation_test.rb @@ -32,7 +32,7 @@ class Deprecatee end -class DeprecationTest < Test::Unit::TestCase +class DeprecationTest < ActiveSupport::TestCase def setup # Track the last warning. @old_behavior = ActiveSupport::Deprecation.behavior diff --git a/activesupport/test/test_test.rb b/activesupport/test/test_test.rb index 4e253848f6..d4ae221f4f 100644 --- a/activesupport/test/test_test.rb +++ b/activesupport/test/test_test.rb @@ -1,7 +1,7 @@ require 'abstract_unit' require 'active_support/test_case' -class AssertDifferenceTest < Test::Unit::TestCase +class AssertDifferenceTest < ActiveSupport::TestCase def setup @object = Class.new do attr_accessor :num @@ -92,7 +92,7 @@ class AlsoDoingNothingTest < ActiveSupport::TestCase end # Setup and teardown callbacks. -class SetupAndTeardownTest < Test::Unit::TestCase +class SetupAndTeardownTest < ActiveSupport::TestCase setup :reset_callback_record, :foo teardown :foo, :sentinel, :foo |