aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/test_case.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailer/lib/action_mailer/test_case.rb')
-rw-r--r--actionmailer/lib/action_mailer/test_case.rb88
1 files changed, 51 insertions, 37 deletions
diff --git a/actionmailer/lib/action_mailer/test_case.rb b/actionmailer/lib/action_mailer/test_case.rb
index d4874c6dbf..b91eed592a 100644
--- a/actionmailer/lib/action_mailer/test_case.rb
+++ b/actionmailer/lib/action_mailer/test_case.rb
@@ -8,55 +8,69 @@ module ActionMailer
end
class TestCase < ActiveSupport::TestCase
- include TestHelper
+ module Behavior
+ extend ActiveSupport::Concern
- setup :initialize_test_deliveries
- setup :set_expected_mail
+ include TestHelper
- class << self
- def tests(mailer)
- write_inheritable_attribute(:mailer_class, mailer)
- end
+ module ClassMethods
+ def tests(mailer)
+ write_inheritable_attribute(:mailer_class, mailer)
+ end
- def mailer_class
- if mailer = read_inheritable_attribute(:mailer_class)
- mailer
- else
- tests determine_default_mailer(name)
+ def mailer_class
+ if mailer = read_inheritable_attribute(:mailer_class)
+ mailer
+ else
+ tests determine_default_mailer(name)
+ end
end
- end
- def determine_default_mailer(name)
- name.sub(/Test$/, '').constantize
- rescue NameError => e
- raise NonInferrableMailerError.new(name)
+ def determine_default_mailer(name)
+ name.sub(/Test$/, '').constantize
+ rescue NameError => e
+ raise NonInferrableMailerError.new(name)
+ end
end
- end
- protected
- def initialize_test_deliveries
- ActionMailer::Base.delivery_method = :test
- ActionMailer::Base.perform_deliveries = true
- ActionMailer::Base.deliveries.clear
- end
+ module InstanceMethods
- def set_expected_mail
- @expected = Mail.new
- @expected.content_type ["text", "plain", { "charset" => charset }]
- @expected.mime_version = '1.0'
- end
+ protected
- private
- def charset
- "UTF-8"
- end
+ def initialize_test_deliveries
+ ActionMailer::Base.delivery_method = :test
+ ActionMailer::Base.perform_deliveries = true
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def set_expected_mail
+ @expected = Mail.new
+ @expected.content_type ["text", "plain", { "charset" => charset }]
+ @expected.mime_version = '1.0'
+ end
+
+ private
+
+ def charset
+ "UTF-8"
+ end
+
+ def encode(subject)
+ Mail::Encodings.q_value_encode(subject, charset)
+ end
- def encode(subject)
- Mail::Encodings.q_value_encode(subject, charset)
+ def read_fixture(action)
+ IO.readlines(File.join(Rails.root, 'test', 'fixtures', self.class.mailer_class.name.underscore, action))
+ end
end
- def read_fixture(action)
- IO.readlines(File.join(Rails.root, 'test', 'fixtures', self.class.mailer_class.name.underscore, action))
+ included do
+ setup :initialize_test_deliveries
+ setup :set_expected_mail
end
+ end
+
+ include Behavior
+
end
end