From 139b92495fa7697cdd619c549d4c7b263562b761 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 5 Jan 2008 13:34:15 +0000 Subject: * Continue evolution toward ActiveSupport::TestCase and friends. #10679 [Josh Peek] * TestCase: introduce declared setup and teardown callbacks. Pass a list of methods and an optional block to call before setup or after teardown. Setup callbacks are run in the order declared; teardown callbacks are run in reverse. [Jeremy Kemper] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8570 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionmailer/lib/action_mailer/test_case.rb | 36 +++++++++++------------------ actionmailer/test/test_helper_test.rb | 10 ++------ 2 files changed, 16 insertions(+), 30 deletions(-) (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer/test_case.rb b/actionmailer/lib/action_mailer/test_case.rb index 7829baa799..d474afe3a2 100644 --- a/actionmailer/lib/action_mailer/test_case.rb +++ b/actionmailer/lib/action_mailer/test_case.rb @@ -8,11 +8,13 @@ module ActionMailer "test case definition" end end - # New Test Super class for forward compatibility. - # To override + class TestCase < ActiveSupport::TestCase include ActionMailer::Quoting + setup :initialize_test_deliveries + setup :set_expected_mail + class << self def tests(mailer) write_inheritable_attribute(:mailer_class, mailer) @@ -33,28 +35,18 @@ module ActionMailer end end - def setup_with_mailer - ActionMailer::Base.delivery_method = :test - ActionMailer::Base.perform_deliveries = true - ActionMailer::Base.deliveries = [] - - @expected = TMail::Mail.new - @expected.set_content_type "text", "plain", { "charset" => charset } - @expected.mime_version = '1.0' - end - alias_method :setup, :setup_with_mailer + protected + def initialize_test_deliveries + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + end - def self.method_added(method) - if method.to_s == 'setup' - unless method_defined?(:setup_without_mailer) - alias_method :setup_without_mailer, :setup - define_method(:setup) do - setup_with_mailer - setup_without_mailer - end - end + def set_expected_mail + @expected = TMail::Mail.new + @expected.set_content_type "text", "plain", { "charset" => charset } + @expected.mime_version = '1.0' end - end private def charset diff --git a/actionmailer/test/test_helper_test.rb b/actionmailer/test/test_helper_test.rb index ab14bcc561..f8913e548c 100644 --- a/actionmailer/test/test_helper_test.rb +++ b/actionmailer/test/test_helper_test.rb @@ -9,7 +9,6 @@ class TestHelperMailer < ActionMailer::Base end class TestHelperMailerTest < ActionMailer::TestCase - def test_setup_sets_right_action_mailer_options assert_equal :test, ActionMailer::Base.delivery_method assert ActionMailer::Base.perform_deliveries @@ -117,19 +116,14 @@ class TestHelperMailerTest < ActionMailer::TestCase end class AnotherTestHelperMailerTest < ActionMailer::TestCase - tests TestHelperMailer def setup - # Should not override ActionMailer setup methods @test_var = "a value" end - def test_should_still_setup_mailer + def test_setup_shouldnt_conflict_with_mailer_setup assert @expected.is_a?(TMail::Mail) - end - - def test_should_run_overridden_setup_method - assert @test_var + assert_equal 'a value', @test_var end end -- cgit v1.2.3