Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Ensure implicit multipart templates with locale works as expected.

  • Loading branch information...
commit 0ece244feec236f57fb2f55ea564409f25475923 1 parent c026282
José Valim and Mikel Lindsaar authored
View
5 actionmailer/lib/action_mailer/base.rb
@@ -1,5 +1,8 @@
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'
@@ -455,6 +458,8 @@ def collect_responses_and_sort_order(headers) #:nodoc:
def each_template(&block) #:nodoc:
self.class.view_paths.each do |load_paths|
templates = load_paths.find_all(action_name, {}, self.class.mailer_name)
+ templates = templates.uniq_by { |t| t.details[:formats] }
+
unless templates.empty?
templates.each(&block)
return
View
27 actionmailer/test/base_test.rb
@@ -34,6 +34,10 @@ def implicit_multipart(hash = {})
mail(DEFAULT_HEADERS.merge(hash))
end
+ def implicit_with_locale(hash = {})
+ mail(DEFAULT_HEADERS.merge(hash))
+ end
+
def explicit_multipart(hash = {})
attachments['invoice.pdf'] = 'This is test File content' if hash.delete(:attachments)
mail(DEFAULT_HEADERS.merge(hash)) do |format|
@@ -310,6 +314,29 @@ def explicit_multipart_with_any(hash = {})
assert_equal(1, BaseMailer.deliveries.length)
end
+ test "implicit multipart with default locale" do
+ email = BaseMailer.implicit_with_locale.deliver
+ assert_equal(2, email.parts.size)
+ assert_equal("multipart/alternate", email.mime_type)
+ assert_equal("text/plain", email.parts[0].mime_type)
+ assert_equal("Implicit with locale TEXT", email.parts[0].body.encoded)
+ assert_equal("text/html", email.parts[1].mime_type)
+ assert_equal("Implicit with locale EN HTML", email.parts[1].body.encoded)
+ end
+
+ test "implicit multipart with other locale" do
+ swap I18n, :locale => :pl do
+ email = BaseMailer.implicit_with_locale.deliver
+ assert_equal(2, email.parts.size)
+ assert_equal("multipart/alternate", email.mime_type)
+ assert_equal("text/plain", email.parts[0].mime_type)
+ assert_equal("Implicit with locale PL TEXT", email.parts[0].body.encoded)
+ assert_equal("text/html", email.parts[1].mime_type)
+ assert_equal("Implicit with locale HTML", email.parts[1].body.encoded)
+ end
+ end
+
+
protected
# Execute the block setting the given values and restoring old values after
View
1  actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb
@@ -0,0 +1 @@
+Implicit with locale EN HTML
View
1  actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb
@@ -0,0 +1 @@
+Implicit with locale HTML
View
1  actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb
@@ -0,0 +1 @@
+Implicit with locale PL TEXT
View
1  actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb
@@ -0,0 +1 @@
+Implicit with locale TEXT
Please sign in to comment.
Something went wrong with that request. Please try again.