mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
f4f76772fb
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>
101 lines
2.3 KiB
Ruby
101 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
|