Permalink
Browse files

Ensure implicit multipart templates with locale works as expected.

  • Loading branch information...
José Valim and Mikel Lindsaar
José Valim and Mikel Lindsaar committed Jan 24, 2010
1 parent c026282 commit 0ece244feec236f57fb2f55ea564409f25475923
@@ -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
@@ -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
@@ -0,0 +1 @@
+Implicit with locale EN HTML
@@ -0,0 +1 @@
+Implicit with locale HTML
@@ -0,0 +1 @@
+Implicit with locale PL TEXT
@@ -0,0 +1 @@
+Implicit with locale TEXT

0 comments on commit 0ece244

Please sign in to comment.