aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/test/delivery_method_test.rb
diff options
context:
space:
mode:
authorMatthew Rudy Jacobs <MatthewRudyJacobs@gmail.com>2009-10-28 09:17:59 +0000
committerYehuda Katz <wycats@gmail.com>2009-11-01 02:23:47 +0100
commitf4f76772fb5c25357a54baaa9cd20f7e9a1cd653 (patch)
treec3095ca798d006fa5750538d862cf5fcc35da6ba /actionmailer/test/delivery_method_test.rb
parent3f560386125adabe441facf2514ad53425e4af4e (diff)
downloadrails-f4f76772fb5c25357a54baaa9cd20f7e9a1cd653.tar.gz
rails-f4f76772fb5c25357a54baaa9cd20f7e9a1cd653.tar.bz2
rails-f4f76772fb5c25357a54baaa9cd20f7e9a1cd653.zip
abstract all of the ActionMailer delivery methods into their own classes. thereby the following are equivalent
ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.delivery_method = ActionMailer::DeliveryMethod::Smtp we could equally set our own custom object as long as it provides the instance method :perform_delivery(mail) eg. class MySmsDeliveryMethod def perform_delivery(mail) Sms.send(mail['to'], mail['body']) end end MySmsMailer.delivery_method = MySmsDeliveryMethod.new Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionmailer/test/delivery_method_test.rb')
-rw-r--r--actionmailer/test/delivery_method_test.rb36
1 files changed, 32 insertions, 4 deletions
diff --git a/actionmailer/test/delivery_method_test.rb b/actionmailer/test/delivery_method_test.rb
index 1b8c3ba523..8f8c6b0275 100644
--- a/actionmailer/test/delivery_method_test.rb
+++ b/actionmailer/test/delivery_method_test.rb
@@ -11,6 +11,21 @@ class FileDeliveryMethodMailer < ActionMailer::Base
self.delivery_method = :file
end
+class CustomDeliveryMethod
+ attr_accessor :custom_deliveries
+ def initialize()
+ @customer_deliveries = []
+ end
+
+ def self.perform_delivery(mail)
+ self.custom_deliveries << mail
+ end
+end
+
+class CustomerDeliveryMailer < ActionMailer::Base
+ self.delivery_method = CustomDeliveryMethod.new
+end
+
class ActionMailerBase_delivery_method_Test < Test::Unit::TestCase
def setup
set_delivery_method :smtp
@@ -21,7 +36,7 @@ class ActionMailerBase_delivery_method_Test < Test::Unit::TestCase
end
def test_should_be_the_default_smtp
- assert_equal :smtp, ActionMailer::Base.delivery_method
+ assert_instance_of ActionMailer::DeliveryMethod::Smtp, ActionMailer::Base.delivery_method
end
end
@@ -35,7 +50,7 @@ class DefaultDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
end
def test_should_be_the_default_smtp
- assert_equal :smtp, DefaultDeliveryMethodMailer.delivery_method
+ assert_instance_of ActionMailer::DeliveryMethod::Smtp, DefaultDeliveryMethodMailer.delivery_method
end
end
@@ -49,7 +64,7 @@ class NonDefaultDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
end
def test_should_be_the_set_delivery_method
- assert_equal :sendmail, NonDefaultDeliveryMethodMailer.delivery_method
+ assert_instance_of ActionMailer::DeliveryMethod::Sendmail, NonDefaultDeliveryMethodMailer.delivery_method
end
end
@@ -63,7 +78,7 @@ class FileDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
end
def test_should_be_the_set_delivery_method
- assert_equal :file, FileDeliveryMethodMailer.delivery_method
+ assert_instance_of ActionMailer::DeliveryMethod::File, FileDeliveryMethodMailer.delivery_method
end
def test_should_default_location_to_the_tmpdir
@@ -71,3 +86,16 @@ class FileDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
end
end
+class CustomDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
+ def setup
+ set_delivery_method :smtp
+ end
+
+ def teardown
+ restore_delivery_method
+ end
+
+ def test_should_be_the_set_delivery_method
+ assert_instance_of CustomDeliveryMethod, CustomerDeliveryMailer.delivery_method
+ end
+end