From 3f8409193716669b9fa61ac74ae1c92cfde00785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 29 Jan 2010 16:16:01 +0100 Subject: ActionMailer should depend just on AbstractController. --- actionmailer/lib/action_mailer.rb | 10 +++++++++- actionmailer/lib/action_mailer/base.rb | 6 ------ actionmailer/lib/action_mailer/railtie.rb | 4 ++++ actionmailer/test/base_test.rb | 33 ++++++++++++++++--------------- actionmailer/test/old_base/url_test.rb | 3 +++ 5 files changed, 33 insertions(+), 23 deletions(-) (limited to 'actionmailer') diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 17f63aca25..0265e6e222 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -24,9 +24,17 @@ actionpack_path = File.expand_path('../../../actionpack/lib', __FILE__) $:.unshift(actionpack_path) if File.directory?(actionpack_path) && !$:.include?(actionpack_path) -require 'action_controller' +require 'abstract_controller' require 'action_view' +# Common ActiveSupport usage in ActionMailer +require 'active_support/core_ext/class' +require 'active_support/core_ext/object/blank' +require 'active_support/core_ext/array/uniq_by' +require 'active_support/core_ext/module/attr_internal' +require 'active_support/core_ext/module/delegation' +require 'active_support/core_ext/string/inflections' + module ActionMailer extend ::ActiveSupport::Autoload diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 6246530bf0..32959e3943 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -1,8 +1,3 @@ -require 'active_support/core_ext/class' -require 'active_support/core_ext/object/blank' -require 'active_support/core_ext/array/uniq_by' -require 'active_support/core_ext/module/delegation' -require 'active_support/core_ext/string/inflections' require 'mail' require 'action_mailer/tmail_compat' require 'action_mailer/collector' @@ -254,7 +249,6 @@ module ActionMailer #:nodoc: include AbstractController::LocalizedCache include AbstractController::Layouts include AbstractController::Helpers - include AbstractController::UrlFor include AbstractController::Translation helper ActionMailer::MailHelper diff --git a/actionmailer/lib/action_mailer/railtie.rb b/actionmailer/lib/action_mailer/railtie.rb index 7ed1519e36..4ed70503fd 100644 --- a/actionmailer/lib/action_mailer/railtie.rb +++ b/actionmailer/lib/action_mailer/railtie.rb @@ -17,5 +17,9 @@ module ActionMailer ActionMailer::Base.send "#{k}=", v end end + + initializer "action_mailer.url_for" do |app| + ActionMailer::Base.send(:include, ActionController::UrlFor) if defined?(ActionController) + end end end \ No newline at end of file diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index 2d3f8ac13a..57bfe2375e 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -415,6 +415,21 @@ class BaseTest < ActiveSupport::TestCase assert_equal("7bit", email.parts[1].content_transfer_encoding) end + test "explicit multipart should be multipart" do + mail = BaseMailer.explicit_multipart + assert_not_nil(mail.content_type_parameters[:boundary]) + end + + test "should set a content type if only has an html part" do + mail = BaseMailer.html_only + assert_equal('text/html', mail.mime_type) + end + + test "should set a content type if only has an plain text part" do + mail = BaseMailer.plain_text_only + assert_equal('text/plain', mail.mime_type) + end + test "explicit multipart with one part is rendered as body" do email = BaseMailer.custom_block assert_equal(0, email.parts.size) @@ -456,22 +471,8 @@ class BaseTest < ActiveSupport::TestCase BaseMailer.expects(:welcome).returns(mail) BaseMailer.welcome.deliver end - - test "explicit multipart should be multipart" do - mail = BaseMailer.explicit_multipart - assert_not_nil(mail.content_type_parameters[:boundary]) - end - - test "should set a content type if only has an html part" do - mail = BaseMailer.html_only - assert_equal('text/html', mail.mime_type) - end - - test "should set a content type if only has an plain text part" do - mail = BaseMailer.plain_text_only - assert_equal('text/plain', mail.mime_type) - end - + + # Rendering test "that you can specify a different template" do mail = BaseMailer.different_template('explicit_multipart_templates') assert_equal("HTML Explicit Multipart Templates", mail.html_part.body.decoded) diff --git a/actionmailer/test/old_base/url_test.rb b/actionmailer/test/old_base/url_test.rb index 5affb47997..ad8b1109c9 100644 --- a/actionmailer/test/old_base/url_test.rb +++ b/actionmailer/test/old_base/url_test.rb @@ -1,9 +1,12 @@ require 'abstract_unit' +require 'action_controller' class WelcomeController < ActionController::Base end class TestMailer < ActionMailer::Base + include ActionController::UrlFor + default_url_options[:host] = 'www.basecamphq.com' def signed_up_with_url(recipient) -- cgit v1.2.3