Move ActionMailer::TC to AV::TC::Behavior

[#4843 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
David Chelimsky 2010-06-12 09:18:42 -04:00 committed by José Valim
parent 7508c0e9d3
commit d588bbd431
3 changed files with 58 additions and 48 deletions

@ -8,55 +8,69 @@ def initialize(name)
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
def determine_default_mailer(name)
name.sub(/Test$/, '').constantize
rescue NameError => e
raise NonInferrableMailerError.new(name)
end
end
def determine_default_mailer(name)
name.sub(/Test$/, '').constantize
rescue NameError => e
raise NonInferrableMailerError.new(name)
module InstanceMethods
protected
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 read_fixture(action)
IO.readlines(File.join(Rails.root, 'test', 'fixtures', self.class.mailer_class.name.underscore, action))
end
end
included do
setup :initialize_test_deliveries
setup :set_expected_mail
end
end
protected
def initialize_test_deliveries
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries.clear
end
include Behavior
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 read_fixture(action)
IO.readlines(File.join(Rails.root, 'test', 'fixtures', self.class.mailer_class.name.underscore, action))
end
end
end

@ -1,5 +1,7 @@
module ActionMailer
module TestHelper
extend ActiveSupport::Concern
# Asserts that the number of emails sent matches the given number.
#
# def test_emails
@ -57,11 +59,3 @@ def assert_no_emails(&block)
end
end
end
module Test
module Unit
class TestCase
include ActionMailer::TestHelper
end
end
end

@ -1113,6 +1113,8 @@ def test_attr
end
class MethodNamingTest < ActiveSupport::TestCase
include ActionMailer::TestHelper
class TestMailer < ActionMailer::Base
def send
body 'foo'