aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionmailer/lib/action_mailer/base.rb2
-rw-r--r--actionmailer/lib/action_mailer/collector.rb3
-rw-r--r--actionmailer/test/base_test.rb57
-rw-r--r--actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.html.erb1
-rw-r--r--actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.text.erb1
5 files changed, 50 insertions, 14 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb
index 5e61b8693a..4ab3761807 100644
--- a/actionmailer/lib/action_mailer/base.rb
+++ b/actionmailer/lib/action_mailer/base.rb
@@ -2,6 +2,7 @@ require 'active_support/core_ext/class'
require 'active_support/core_ext/module/delegation'
require 'mail'
require 'action_mailer/tmail_compat'
+require 'action_mailer/collector'
module ActionMailer #:nodoc:
# Action Mailer allows you to send email from your application using a mailer model and views.
@@ -442,7 +443,6 @@ module ActionMailer #:nodoc:
end
content_type ||= create_parts_from_responses(m, responses, charset)
-
m.content_type = content_type
m.charset = charset
m.mime_version = mime_version
diff --git a/actionmailer/lib/action_mailer/collector.rb b/actionmailer/lib/action_mailer/collector.rb
index 0891b6f123..5431efccfe 100644
--- a/actionmailer/lib/action_mailer/collector.rb
+++ b/actionmailer/lib/action_mailer/collector.rb
@@ -14,11 +14,10 @@ module ActionMailer #:nodoc:
@default_formats = context.formats
end
- # TODO Test me
def any(*args, &block)
options = args.extract_options!
raise "You have to supply at least one format" if args.empty?
- args.each { |type| send(type, options, &block) }
+ args.each { |type| send(type, options.dup, &block) }
end
alias :all :any
diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb
index 3033b2db0f..83943162d2 100644
--- a/actionmailer/test/base_test.rb
+++ b/actionmailer/test/base_test.rb
@@ -77,7 +77,19 @@ class BaseTest < ActiveSupport::TestCase
format.html { render :text => "HTML Explicit Multipart" }
end
end
-
+
+ def explicit_multipart_templates(hash = {})
+ mail(DEFAULT_HEADERS.merge(hash)) do |format|
+ format.html
+ format.text
+ end
+ end
+
+ def explicit_multipart_with_any(hash = {})
+ mail(DEFAULT_HEADERS.merge(hash)) do |format|
+ format.any(:text, :html){ render :text => "Format with any!" }
+ end
+ end
end
test "method call to mail does not raise error" do
@@ -214,7 +226,7 @@ class BaseTest < ActiveSupport::TestCase
end
# Implicit multipart
- test "implicit multipart tests" do
+ test "implicit multipart" do
email = BaseMailer.deliver_implicit_multipart
assert_equal(2, email.parts.size)
assert_equal("multipart/alternate", email.mime_type)
@@ -224,7 +236,7 @@ class BaseTest < ActiveSupport::TestCase
assert_equal("HTML Implicit Multipart", email.parts[1].body.encoded)
end
- test "implicit multipart tests with sort order" do
+ test "implicit multipart with sort order" do
order = ["text/html", "text/plain"]
swap BaseMailer, :default_implicit_parts_order => order do
email = BaseMailer.deliver_implicit_multipart
@@ -258,7 +270,8 @@ class BaseTest < ActiveSupport::TestCase
end
end
- test "explicit multipart tests" do
+ # Explicit multipart
+ test "explicit multipart" do
email = BaseMailer.deliver_explicit_multipart
assert_equal(2, email.parts.size)
assert_equal("multipart/alternate", email.mime_type)
@@ -282,15 +295,37 @@ class BaseTest < ActiveSupport::TestCase
end
test "explicit multipart with attachments creates nested parts" do
- email = BaseMailer.deliver_explicit_multipart(:attachments => true)
- assert_equal("application/pdf", email.parts[0].mime_type)
- assert_equal("multipart/alternate", email.parts[1].mime_type)
- assert_equal("text/plain", email.parts[1].parts[0].mime_type)
- assert_equal("TEXT Explicit Multipart", email.parts[1].parts[0].body.encoded)
- assert_equal("text/html", email.parts[1].parts[1].mime_type)
- assert_equal("HTML Explicit Multipart", email.parts[1].parts[1].body.encoded)
+ email = BaseMailer.deliver_explicit_multipart(:attachments => true)
+ assert_equal("application/pdf", email.parts[0].mime_type)
+ assert_equal("multipart/alternate", email.parts[1].mime_type)
+ assert_equal("text/plain", email.parts[1].parts[0].mime_type)
+ assert_equal("TEXT Explicit Multipart", email.parts[1].parts[0].body.encoded)
+ assert_equal("text/html", email.parts[1].parts[1].mime_type)
+ assert_equal("HTML Explicit Multipart", email.parts[1].parts[1].body.encoded)
end
+ # TODO Seems Mail is sorting the templates automatically, and not on demand
+ # test "explicit multipart with templates" do
+ # email = BaseMailer.deliver_explicit_multipart_templates
+ # assert_equal(2, email.parts.size)
+ # assert_equal("multipart/alternate", email.mime_type)
+ # assert_equal("text/html", email.parts[0].mime_type)
+ # assert_equal("HTML Explicit Multipart Templates", email.parts[0].body.encoded)
+ # assert_equal("text/plain", email.parts[1].mime_type)
+ # assert_equal("TEXT Explicit Multipart Templates", email.parts[1].body.encoded)
+ # end
+
+ test "explicit multipart with any" do
+ email = BaseMailer.deliver_explicit_multipart_with_any
+ assert_equal(2, email.parts.size)
+ assert_equal("multipart/alternate", email.mime_type)
+ assert_equal("text/plain", email.parts[0].mime_type)
+ assert_equal("Format with any!", email.parts[0].body.encoded)
+ assert_equal("text/html", email.parts[1].mime_type)
+ assert_equal("Format with any!", email.parts[1].body.encoded)
+ end
+
+
protected
# Execute the block setting the given values and restoring old values after
diff --git a/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.html.erb b/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.html.erb
new file mode 100644
index 0000000000..c0a61b6249
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.html.erb
@@ -0,0 +1 @@
+HTML Explicit Multipart Templates \ No newline at end of file
diff --git a/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.text.erb b/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.text.erb
new file mode 100644
index 0000000000..507230b1de
--- /dev/null
+++ b/actionmailer/test/fixtures/base_mailer/explicit_multipart_templates.text.erb
@@ -0,0 +1 @@
+TEXT Explicit Multipart Templates \ No newline at end of file