mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
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>
102 lines
2.3 KiB
Ruby
102 lines
2.3 KiB
Ruby
require 'abstract_unit'
|
|
|
|
class DefaultDeliveryMethodMailer < ActionMailer::Base
|
|
end
|
|
|
|
class NonDefaultDeliveryMethodMailer < ActionMailer::Base
|
|
self.delivery_method = :sendmail
|
|
end
|
|
|
|
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
|
|
end
|
|
|
|
def teardown
|
|
restore_delivery_method
|
|
end
|
|
|
|
def test_should_be_the_default_smtp
|
|
assert_instance_of ActionMailer::DeliveryMethod::Smtp, ActionMailer::Base.delivery_method
|
|
end
|
|
end
|
|
|
|
class DefaultDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
|
|
def setup
|
|
set_delivery_method :smtp
|
|
end
|
|
|
|
def teardown
|
|
restore_delivery_method
|
|
end
|
|
|
|
def test_should_be_the_default_smtp
|
|
assert_instance_of ActionMailer::DeliveryMethod::Smtp, DefaultDeliveryMethodMailer.delivery_method
|
|
end
|
|
end
|
|
|
|
class NonDefaultDeliveryMethodMailer_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 ActionMailer::DeliveryMethod::Sendmail, NonDefaultDeliveryMethodMailer.delivery_method
|
|
end
|
|
end
|
|
|
|
class FileDeliveryMethodMailer_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 ActionMailer::DeliveryMethod::File, FileDeliveryMethodMailer.delivery_method
|
|
end
|
|
|
|
def test_should_default_location_to_the_tmpdir
|
|
assert_equal "#{Dir.tmpdir}/mails", ActionMailer::Base.file_settings[:location]
|
|
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
|