aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim and Mikel Lindsaar <raasdnil@gmail.com>2010-01-21 20:03:55 +1100
committerJosé Valim and Mikel Lindsaar <raasdnil@gmail.com>2010-01-21 20:03:55 +1100
commit3829f9ecfd6fcd54edbc15f624ee3b68f6dae135 (patch)
treef85c4fb58b38209ddbffc76f8c8e7ad26c4c6945
parentfbdbac2b88218e5e3e6087c67dacf7e755aa4106 (diff)
downloadrails-3829f9ecfd6fcd54edbc15f624ee3b68f6dae135.tar.gz
rails-3829f9ecfd6fcd54edbc15f624ee3b68f6dae135.tar.bz2
rails-3829f9ecfd6fcd54edbc15f624ee3b68f6dae135.zip
Adding tests for attachments['blah.rb'] = {} et al
-rw-r--r--actionmailer/actionmailer.gemspec2
-rw-r--r--actionmailer/lib/action_mailer/deprecated_api.rb12
-rw-r--r--actionmailer/lib/action_mailer/tmail_compat.rb5
-rw-r--r--actionmailer/test/base_test.rb27
-rw-r--r--actionmailer/test/mail_service_test.rb1
5 files changed, 44 insertions, 3 deletions
diff --git a/actionmailer/actionmailer.gemspec b/actionmailer/actionmailer.gemspec
index cc1c25401e..9a8c1df9e8 100644
--- a/actionmailer/actionmailer.gemspec
+++ b/actionmailer/actionmailer.gemspec
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
s.homepage = "http://www.rubyonrails.org"
s.add_dependency('actionpack', '= 3.0.pre')
- s.add_dependency('mail', '~> 2.0.1')
+ s.add_dependency('mail', '~> 2.0.2')
s.files = Dir['CHANGELOG', 'README', 'MIT-LICENSE', 'lib/**/*']
s.has_rdoc = true
diff --git a/actionmailer/lib/action_mailer/deprecated_api.rb b/actionmailer/lib/action_mailer/deprecated_api.rb
index e11dd4c46a..d096ea6180 100644
--- a/actionmailer/lib/action_mailer/deprecated_api.rb
+++ b/actionmailer/lib/action_mailer/deprecated_api.rb
@@ -19,6 +19,7 @@ module ActionMailer
end
part = Mail::Part.new(params)
+
yield part if block_given?
@parts << part
end
@@ -29,7 +30,16 @@ module ActionMailer
super # Run deprecation hooks
params = { :content_type => params } if String === params
- params = { :content_disposition => "attachment",
+
+ if filename = params.delete(:filename)
+ content_disposition = "attachment; filename=\"#{File.basename(filename)}\""
+ else
+ content_disposition = "attachment"
+ end
+
+ params[:content] = params.delete(:data) if params[:data]
+
+ params = { :content_disposition => content_disposition,
:content_transfer_encoding => "base64" }.merge(params)
part(params, &block)
diff --git a/actionmailer/lib/action_mailer/tmail_compat.rb b/actionmailer/lib/action_mailer/tmail_compat.rb
index 2fd25ff145..94f21c7cf3 100644
--- a/actionmailer/lib/action_mailer/tmail_compat.rb
+++ b/actionmailer/lib/action_mailer/tmail_compat.rb
@@ -16,5 +16,10 @@ module Mail
end
end
+ def original_filename
+ STDERR.puts("Message#original_filename is deprecated, please call Message#filename.\n#{caller}")
+ filename
+ end
+
end
end \ No newline at end of file
diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb
index b8d2e46241..f1f5f38482 100644
--- a/actionmailer/test/base_test.rb
+++ b/actionmailer/test/base_test.rb
@@ -42,12 +42,18 @@ class BaseTest < Test::Unit::TestCase
class TestMailer < ActionMailer::Base
def welcome(hash = {})
- headers['X-SPAM'] = "Not SPAM"
hash = {:to => 'mikel@test.lindsaar.net', :from => 'jose@test.plataformatec.com',
:subject => 'The first email on new API!'}.merge!(hash)
mail(hash)
end
+ def invoice(hash = {})
+ 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)
+ end
+
end
def test_the_method_call_to_mail_does_not_raise_error
@@ -84,6 +90,25 @@ class BaseTest < Test::Unit::TestCase
# assert_equal("Not SPAM", email['X-SPAM'])
# end
+ def test_should_allow_you_to_send_an_attachment
+ assert_nothing_raised { TestMailer.deliver_invoice }
+ end
+
+ def test_should_allow_you_to_send_an_attachment
+ email = TestMailer.deliver_invoice
+ assert_equal(1, email.attachments.length)
+ end
+
+ def test_should_allow_you_to_send_an_attachment
+ email = TestMailer.deliver_invoice
+ 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)
+ end
+
def test_should_use_class_defaults
end
diff --git a/actionmailer/test/mail_service_test.rb b/actionmailer/test/mail_service_test.rb
index 396dd00a91..f83e13f16f 100644
--- a/actionmailer/test/mail_service_test.rb
+++ b/actionmailer/test/mail_service_test.rb
@@ -898,6 +898,7 @@ EOF
assert_equal "iso-8859-1", mail.parts[1].charset
assert_equal "image/jpeg", mail.parts[2].mime_type
+
assert_equal "attachment", mail.parts[2][:content_disposition].disposition_type
assert_equal "foo.jpg", mail.parts[2][:content_disposition].filename
assert_equal "foo.jpg", mail.parts[2][:content_type].filename