aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/test
diff options
context:
space:
mode:
authorMikel Lindsaar <raasdnil@gmail.com>2010-01-22 21:58:13 +1100
committerMikel Lindsaar <raasdnil@gmail.com>2010-01-22 21:58:13 +1100
commit6cf378aeb048e25037a11cabe6338cd893789258 (patch)
treedd2c4ed8efb13eef354d701efd7d8d2c649ac4ff /actionmailer/test
parent1170e70797e06b3f062e222d912b0cc1dd6072e5 (diff)
parentb30eb39ff072ce95ccd5ce94ae08d116c23fd260 (diff)
downloadrails-6cf378aeb048e25037a11cabe6338cd893789258.tar.gz
rails-6cf378aeb048e25037a11cabe6338cd893789258.tar.bz2
rails-6cf378aeb048e25037a11cabe6338cd893789258.zip
Merge branch 'master' of github.com:mikel/rails
Diffstat (limited to 'actionmailer/test')
-rw-r--r--actionmailer/test/base_test.rb115
1 files changed, 82 insertions, 33 deletions
diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb
index f1f5f38482..b11631f444 100644
--- a/actionmailer/test/base_test.rb
+++ b/actionmailer/test/base_test.rb
@@ -37,37 +37,43 @@ require 'abstract_unit'
# mail.deliver
#
# Notifier.welcome(user).deliver # => creates and sends the Mail in one step
-class BaseTest < Test::Unit::TestCase
-
+class BaseTest < ActiveSupport::TestCase
+ DEFAULT_HEADERS = {
+ :to => 'mikel@test.lindsaar.net',
+ :from => 'jose@test.plataformatec.com',
+ :subject => 'The first email on new API!'
+ }
+
class TestMailer < ActionMailer::Base
-
def welcome(hash = {})
- hash = {:to => 'mikel@test.lindsaar.net', :from => 'jose@test.plataformatec.com',
- :subject => 'The first email on new API!'}.merge!(hash)
- mail(hash)
+ headers['X-SPAM'] = "Not SPAM"
+ mail(DEFAULT_HEADERS.merge(hash))
end
-
- def invoice(hash = {})
+
+ def attachment_with_content
attachments['invoice.pdf'] = 'This is test File content'
- hash = {:to => 'mikel@test.lindsaar.net', :from => 'jose@test.plataformatec.com',
- :subject => 'Your invoice is attached'}.merge!(hash)
- mail(hash)
+ mail(DEFAULT_HEADERS)
+ end
+
+ def attachment_with_hash
+ attachments['invoice.jpg'] = { :content => "you smiling", :mime_type => "image/x-jpg",
+ :transfer_encoding => "base64" }
+ mail(DEFAULT_HEADERS)
end
-
end
- def test_the_method_call_to_mail_does_not_raise_error
+ test "method call to mail does not raise error" do
assert_nothing_raised { TestMailer.deliver_welcome }
end
- def test_should_set_the_headers_of_the_mail_message
+ test "mail() should set the headers of the mail message" do
email = TestMailer.deliver_welcome
assert_equal(email.to, ['mikel@test.lindsaar.net'])
assert_equal(email.from, ['jose@test.plataformatec.com'])
assert_equal(email.subject, 'The first email on new API!')
end
-
- def test_should_allow_all_headers_set
+
+ test "mail() with bcc, cc, content_type, charset, mime_version, reply_to and date" do
@time = Time.now
email = TestMailer.deliver_welcome(:bcc => 'bcc@test.lindsaar.net',
:cc => 'cc@test.lindsaar.net',
@@ -85,32 +91,58 @@ class BaseTest < Test::Unit::TestCase
assert_equal(email.date, @time)
end
-# def test_should_allow_custom_headers_to_be_set
-# email = TestMailer.deliver_welcome
-# assert_equal("Not SPAM", email['X-SPAM'])
-# end
-
- def test_should_allow_you_to_send_an_attachment
- assert_nothing_raised { TestMailer.deliver_invoice }
+ test "custom headers" do
+ email = TestMailer.deliver_welcome
+ assert_equal("Not SPAM", email['X-SPAM'].decoded)
end
- def test_should_allow_you_to_send_an_attachment
- email = TestMailer.deliver_invoice
+ test "attachment with content" do
+ email = TestMailer.deliver_attachment_with_content
assert_equal(1, email.attachments.length)
+ assert_equal('invoice.pdf', email.attachments[0].filename)
+ assert_equal('This is test File content', email.attachments['invoice.pdf'].decoded)
end
- def test_should_allow_you_to_send_an_attachment
- email = TestMailer.deliver_invoice
+ test "attachment gets content type from filename" do
+ email = TestMailer.deliver_attachment_with_content
assert_equal('invoice.pdf', email.attachments[0].filename)
end
- def test_should_allow_you_to_send_an_attachment
- email = TestMailer.deliver_invoice
- assert_equal('This is test File content', email.attachments['invoice.pdf'].decoded)
+ test "attachment with hash" do
+ email = TestMailer.deliver_attachment_with_hash
+ assert_equal(1, email.attachments.length)
+ assert_equal('invoice.jpg', email.attachments[0].filename)
+ assert_equal("\312\213\254\232)b", email.attachments['invoice.jpg'].decoded)
+ end
+
+ test "uses default charset from class" do
+ swap TestMailer, :default_charset => "US-ASCII" do
+ email = TestMailer.deliver_welcome
+ assert_equal("US-ASCII", email.charset)
+
+ email = TestMailer.deliver_welcome(:charset => "iso-8559-1")
+ assert_equal("iso-8559-1", email.charset)
+ end
end
- def test_should_use_class_defaults
-
+ test "uses default content type from class" do
+ swap TestMailer, :default_content_type => "text/html" do
+ email = TestMailer.deliver_welcome
+ assert_equal("text/html", email.mime_type)
+
+ email = TestMailer.deliver_welcome(:content_type => "application/xml")
+ assert_equal("application/xml", email.mime_type)
+ end
+ end
+
+ test "uses default mime version from class" do
+ swap TestMailer, :default_mime_version => "2.0" do
+ email = TestMailer.deliver_welcome
+ assert_equal("2.0", email.mime_version)
+
+ email = TestMailer.deliver_welcome(:mime_version => "1.0")
+ assert_equal("1.0", email.mime_version)
+ end
end
# def test_that_class_defaults_are_set_on_instantiation
@@ -120,5 +152,22 @@ class BaseTest < Test::Unit::TestCase
# def test_should_set_the_subject_from_i18n
# pending
# end
-
+
+ protected
+
+ # Execute the block setting the given values and restoring old values after
+ # the block is executed.
+ def swap(object, new_values)
+ old_values = {}
+ new_values.each do |key, value|
+ old_values[key] = object.send key
+ object.send :"#{key}=", value
+ end
+ yield
+ ensure
+ old_values.each do |key, value|
+ object.send :"#{key}=", value
+ end
+ end
+
end \ No newline at end of file