aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer
diff options
context:
space:
mode:
authorJosé Valim and Mikel Lindsaar <pair@programming.com>2010-01-24 23:59:12 +0100
committerJosé Valim and Mikel Lindsaar <pair@programming.com>2010-01-24 23:59:12 +0100
commit0ece244feec236f57fb2f55ea564409f25475923 (patch)
tree143486fe585873223bb384621381ad248037a891 /actionmailer
parentc0262827cacc1baf16668af65c35a09138166394 (diff)
downloadrails-0ece244feec236f57fb2f55ea564409f25475923.tar.gz
rails-0ece244feec236f57fb2f55ea564409f25475923.tar.bz2
rails-0ece244feec236f57fb2f55ea564409f25475923.zip
Ensure implicit multipart templates with locale works as expected.
Diffstat (limited to 'actionmailer')
-rw-r--r--actionmailer/lib/action_mailer/base.rb5
-rw-r--r--actionmailer/test/base_test.rb27
-rw-r--r--actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb1
-rw-r--r--actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb1
-rw-r--r--actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb1
-rw-r--r--actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb1
6 files changed, 36 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb
index 7101bfbb70..84d50fa1f4 100644
--- a/actionmailer/lib/action_mailer/base.rb
+++ b/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 @@ module ActionMailer #: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
diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb
index dd17bf868b..71845d4c42 100644
--- a/actionmailer/test/base_test.rb
+++ b/actionmailer/test/base_test.rb
@@ -34,6 +34,10 @@ class BaseTest < ActiveSupport::TestCase
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 @@ class BaseTest < ActiveSupport::TestCase
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
diff --git a/actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb
new file mode 100644
index 0000000000..34e39c8fdb
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.en.html.erb
@@ -0,0 +1 @@
+Implicit with locale EN HTML \ No newline at end of file
diff --git a/actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb
new file mode 100644
index 0000000000..5ce283f221
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.html.erb
@@ -0,0 +1 @@
+Implicit with locale HTML \ No newline at end of file
diff --git a/actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb
new file mode 100644
index 0000000000..c49cbae60a
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.pl.text.erb
@@ -0,0 +1 @@
+Implicit with locale PL TEXT \ No newline at end of file
diff --git a/actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb
new file mode 100644
index 0000000000..5a18ff62cd
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/implicit_with_locale.text.erb
@@ -0,0 +1 @@
+Implicit with locale TEXT \ No newline at end of file