Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Move config_accessor :asset_host from ActionController::Base to Abstr…

…actController which fixes issues with asset_host in ActionMailer

Including:
  - Moved mailer objects in separate directory
  - Added two tests for asset_host configuration option
  • Loading branch information...
commit affeb51569d291ef7304189fd77b32c6e269af57 1 parent 5ebc1d8
@jeroenvandijk jeroenvandijk authored josevalim committed
View
156 actionmailer/test/base_test.rb
@@ -2,139 +2,17 @@
require 'abstract_unit'
require 'active_support/time'
+require 'mailers/base_mailer'
+require 'mailers/proc_mailer'
+require 'mailers/asset_mailer'
+
class BaseTest < ActiveSupport::TestCase
# TODO Add some tests for implicity layout render and url helpers
# so we can get rid of old base tests altogether with old base.
- class BaseMailer < ActionMailer::Base
- self.mailer_name = "base_mailer"
-
- default :to => 'system@test.lindsaar.net',
- :from => 'jose@test.plataformatec.com',
- :reply_to => 'mikel@test.lindsaar.net'
-
- def welcome(hash = {})
- headers['X-SPAM'] = "Not SPAM"
- mail({:subject => "The first email on new API!"}.merge!(hash))
- end
-
- def welcome_with_headers(hash = {})
- headers hash
- mail
- end
-
- def welcome_from_another_path(path)
- mail(:template_name => "welcome", :template_path => path)
- end
-
- def html_only(hash = {})
- mail(hash)
- end
-
- def plain_text_only(hash = {})
- mail(hash)
- end
-
- def inline_attachment
- attachments.inline['logo.png'] = "\312\213\254\232"
- mail
- end
-
- def attachment_with_content(hash = {})
- attachments['invoice.pdf'] = 'This is test File content'
- mail(hash)
- end
-
- def attachment_with_hash
- attachments['invoice.jpg'] = { :data => "\312\213\254\232)b",
- :mime_type => "image/x-jpg",
- :transfer_encoding => "base64" }
- mail
- end
-
- def attachment_with_hash_default_encoding
- attachments['invoice.jpg'] = { :data => "\312\213\254\232)b",
- :mime_type => "image/x-jpg" }
- mail
- end
-
- def implicit_multipart(hash = {})
- attachments['invoice.pdf'] = 'This is test File content' if hash.delete(:attachments)
- mail(hash)
- end
-
- def implicit_with_locale(hash = {})
- mail(hash)
- end
-
- def explicit_multipart(hash = {})
- attachments['invoice.pdf'] = 'This is test File content' if hash.delete(:attachments)
- mail(hash) do |format|
- format.text { render :text => "TEXT Explicit Multipart" }
- format.html { render :text => "HTML Explicit Multipart" }
- end
- end
-
- def explicit_multipart_templates(hash = {})
- mail(hash) do |format|
- format.html
- format.text
- end
- end
- def explicit_multipart_with_any(hash = {})
- mail(hash) do |format|
- format.any(:text, :html){ render :text => "Format with any!" }
- end
- end
-
- def explicit_multipart_with_options(include_html = false)
- mail do |format|
- format.text(:content_transfer_encoding => "base64"){ render "welcome" }
- format.html{ render "welcome" } if include_html
- end
- end
-
- def explicit_multipart_with_one_template(hash = {})
- mail(hash) do |format|
- format.html
- format.text
- end
- end
-
- def implicit_different_template(template_name='')
- mail(:template_name => template_name)
- end
-
- def explicit_different_template(template_name='')
- mail do |format|
- format.text { render :template => "#{mailer_name}/#{template_name}" }
- format.html { render :template => "#{mailer_name}/#{template_name}" }
- end
- end
-
- def different_layout(layout_name='')
- mail do |format|
- format.text { render :layout => layout_name }
- format.html { render :layout => layout_name }
- end
- end
- end
-
- class ProcMailer < ActionMailer::Base
- default :to => 'system@test.lindsaar.net',
- 'X-Proc-Method' => Proc.new { Time.now.to_i.to_s },
- :subject => Proc.new { give_a_greeting }
-
- def welcome
- mail
- end
-
- private
-
- def give_a_greeting
- "Thanks for signing up this afternoon"
- end
-
+ def teardown
+ ActionMailer::Base.asset_host = nil
+ ActionMailer::Base.assets_dir = nil
end
test "method call to mail does not raise error" do
@@ -570,6 +448,26 @@ def give_a_greeting
assert_equal("Welcome from another path", mail.body.encoded)
end
+ test "assets tags should use ActionMailer's asset_host settings" do
+ ActionMailer::Base.config.asset_host = "http://global.com"
+ ActionMailer::Base.config.assets_dir = "global/"
+
+ mail = AssetMailer.welcome
+
+ assert_equal(%{<img alt="Dummy" src="http://global.com/images/dummy.png" />}, mail.body.to_s.strip)
+ end
+
+ test "assets tags should use a Mailer's asset_host settings when available" do
+ ActionMailer::Base.config.asset_host = "global.com"
+ ActionMailer::Base.config.assets_dir = "global/"
+
+ AssetMailer.asset_host = "http://local.com"
+
+ mail = AssetMailer.welcome
+
+ assert_equal(%{<img alt="Dummy" src="http://local.com/images/dummy.png" />}, mail.body.to_s.strip)
+ end
+
# Before and After hooks
class MyObserver
View
1  actionmailer/test/fixtures/asset_mailer/welcome.html.erb
@@ -0,0 +1 @@
+<%= image_tag "dummy.png" %>
View
7 actionmailer/test/mailers/asset_mailer.rb
@@ -0,0 +1,7 @@
+class AssetMailer < ActionMailer::Base
+ self.mailer_name = "asset_mailer"
+
+ def welcome
+ mail
+ end
+end
View
114 actionmailer/test/mailers/base_mailer.rb
@@ -0,0 +1,114 @@
+class BaseMailer < ActionMailer::Base
+ self.mailer_name = "base_mailer"
+
+ default :to => 'system@test.lindsaar.net',
+ :from => 'jose@test.plataformatec.com',
+ :reply_to => 'mikel@test.lindsaar.net'
+
+ def welcome(hash = {})
+ headers['X-SPAM'] = "Not SPAM"
+ mail({:subject => "The first email on new API!"}.merge!(hash))
+ end
+
+ def welcome_with_headers(hash = {})
+ headers hash
+ mail
+ end
+
+ def welcome_from_another_path(path)
+ mail(:template_name => "welcome", :template_path => path)
+ end
+
+ def html_only(hash = {})
+ mail(hash)
+ end
+
+ def plain_text_only(hash = {})
+ mail(hash)
+ end
+
+ def inline_attachment
+ attachments.inline['logo.png'] = "\312\213\254\232"
+ mail
+ end
+
+ def attachment_with_content(hash = {})
+ attachments['invoice.pdf'] = 'This is test File content'
+ mail(hash)
+ end
+
+ def attachment_with_hash
+ attachments['invoice.jpg'] = { :data => "\312\213\254\232)b",
+ :mime_type => "image/x-jpg",
+ :transfer_encoding => "base64" }
+ mail
+ end
+
+ def attachment_with_hash_default_encoding
+ attachments['invoice.jpg'] = { :data => "\312\213\254\232)b",
+ :mime_type => "image/x-jpg" }
+ mail
+ end
+
+ def implicit_multipart(hash = {})
+ attachments['invoice.pdf'] = 'This is test File content' if hash.delete(:attachments)
+ mail(hash)
+ end
+
+ def implicit_with_locale(hash = {})
+ mail(hash)
+ end
+
+ def explicit_multipart(hash = {})
+ attachments['invoice.pdf'] = 'This is test File content' if hash.delete(:attachments)
+ mail(hash) do |format|
+ format.text { render :text => "TEXT Explicit Multipart" }
+ format.html { render :text => "HTML Explicit Multipart" }
+ end
+ end
+
+ def explicit_multipart_templates(hash = {})
+ mail(hash) do |format|
+ format.html
+ format.text
+ end
+ end
+
+ def explicit_multipart_with_any(hash = {})
+ mail(hash) do |format|
+ format.any(:text, :html){ render :text => "Format with any!" }
+ end
+ end
+
+ def explicit_multipart_with_options(include_html = false)
+ mail do |format|
+ format.text(:content_transfer_encoding => "base64"){ render "welcome" }
+ format.html{ render "welcome" } if include_html
+ end
+ end
+
+ def explicit_multipart_with_one_template(hash = {})
+ mail(hash) do |format|
+ format.html
+ format.text
+ end
+ end
+
+ def implicit_different_template(template_name='')
+ mail(:template_name => template_name)
+ end
+
+ def explicit_different_template(template_name='')
+ mail do |format|
+ format.text { render :template => "#{mailer_name}/#{template_name}" }
+ format.html { render :template => "#{mailer_name}/#{template_name}" }
+ end
+ end
+
+ def different_layout(layout_name='')
+ mail do |format|
+ format.text { render :layout => layout_name }
+ format.html { render :layout => layout_name }
+ end
+ end
+end
View
16 actionmailer/test/mailers/proc_mailer.rb
@@ -0,0 +1,16 @@
+class ProcMailer < ActionMailer::Base
+ default :to => 'system@test.lindsaar.net',
+ 'X-Proc-Method' => Proc.new { Time.now.to_i.to_s },
+ :subject => Proc.new { give_a_greeting }
+
+ def welcome
+ mail
+ end
+
+ private
+
+ def give_a_greeting
+ "Thanks for signing up this afternoon"
+ end
+
+end
View
2  actionpack/lib/abstract_controller/asset_paths.rb
@@ -3,7 +3,7 @@ module AssetPaths
extend ActiveSupport::Concern
included do
- config_accessor :assets_dir, :javascripts_dir, :stylesheets_dir
+ config_accessor :asset_host, :assets_dir, :javascripts_dir, :stylesheets_dir
end
end
end
View
2  actionpack/lib/action_controller/base.rb
@@ -63,7 +63,7 @@ def self.inherited(klass)
klass.helper :all
end
- config_accessor :asset_host, :asset_path
+ config_accessor :asset_path
ActiveSupport.run_load_hooks(:action_controller, self)
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.