Removed mocha from ActionMailer

This commit is contained in:
Ronak Jangir 2015-08-20 11:27:49 +05:30
parent c83b117d4b
commit c48257b0af
4 changed files with 100 additions and 55 deletions

View File

@ -9,6 +9,7 @@ silence_warnings do
end
require 'active_support/testing/autorun'
require 'active_support/testing/method_call_assertions'
require 'action_mailer'
require 'action_mailer/test_case'
@ -40,4 +41,6 @@ def jruby_skip(message = '')
skip message if defined?(JRUBY_VERSION)
end
require 'mocha/setup' # FIXME: stop using mocha
class ActiveSupport::TestCase
include ActiveSupport::Testing::MethodCallAssertions
end

View File

@ -505,9 +505,10 @@ class BaseTest < ActiveSupport::TestCase
end
test "calling deliver on the action should deliver the mail object" do
BaseMailer.expects(:deliver_mail).once
mail = BaseMailer.welcome.deliver_now
assert_equal 'The first email on new API!', mail.subject
assert_called(BaseMailer, :deliver_mail) do
mail = BaseMailer.welcome.deliver_now
assert_equal 'The first email on new API!', mail.subject
end
end
test "calling deliver on the action should increment the deliveries collection if using the test mailer" do
@ -517,9 +518,11 @@ class BaseTest < ActiveSupport::TestCase
test "calling deliver, ActionMailer should yield back to mail to let it call :do_delivery on itself" do
mail = Mail::Message.new
mail.expects(:do_delivery).once
BaseMailer.expects(:welcome).returns(mail)
BaseMailer.welcome.deliver
assert_called(mail, :do_delivery) do
assert_called(BaseMailer, :welcome, returns: mail) do
BaseMailer.welcome.deliver
end
end
end
# Rendering
@ -607,8 +610,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_observer(MyObserver)
mail = BaseMailer.welcome
MyObserver.expects(:delivered_email).with(mail)
mail.deliver_now
assert_called_with(MyObserver, :delivered_email, [mail]) do
mail.deliver_now
end
end
end
@ -616,8 +620,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_observer("BaseTest::MyObserver")
mail = BaseMailer.welcome
MyObserver.expects(:delivered_email).with(mail)
mail.deliver_now
assert_called_with(MyObserver, :delivered_email, [mail]) do
mail.deliver_now
end
end
end
@ -625,8 +630,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_observer(:"base_test/my_observer")
mail = BaseMailer.welcome
MyObserver.expects(:delivered_email).with(mail)
mail.deliver_now
assert_called_with(MyObserver, :delivered_email, [mail]) do
mail.deliver_now
end
end
end
@ -634,9 +640,11 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_observers("BaseTest::MyObserver", MySecondObserver)
mail = BaseMailer.welcome
MyObserver.expects(:delivered_email).with(mail)
MySecondObserver.expects(:delivered_email).with(mail)
mail.deliver_now
assert_called_with(MyObserver, :delivered_email, [mail]) do
assert_called_with(MySecondObserver, :delivered_email, [mail]) do
mail.deliver_now
end
end
end
end
@ -654,8 +662,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_interceptor(MyInterceptor)
mail = BaseMailer.welcome
MyInterceptor.expects(:delivering_email).with(mail)
mail.deliver_now
assert_called_with(MyInterceptor, :delivering_email, [mail]) do
mail.deliver_now
end
end
end
@ -663,8 +672,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_interceptor("BaseTest::MyInterceptor")
mail = BaseMailer.welcome
MyInterceptor.expects(:delivering_email).with(mail)
mail.deliver_now
assert_called_with(MyInterceptor, :delivering_email, [mail]) do
mail.deliver_now
end
end
end
@ -672,8 +682,9 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_interceptor(:"base_test/my_interceptor")
mail = BaseMailer.welcome
MyInterceptor.expects(:delivering_email).with(mail)
mail.deliver_now
assert_called_with(MyInterceptor, :delivering_email, [mail]) do
mail.deliver_now
end
end
end
@ -681,18 +692,21 @@ class BaseTest < ActiveSupport::TestCase
mail_side_effects do
ActionMailer::Base.register_interceptors("BaseTest::MyInterceptor", MySecondInterceptor)
mail = BaseMailer.welcome
MyInterceptor.expects(:delivering_email).with(mail)
MySecondInterceptor.expects(:delivering_email).with(mail)
mail.deliver_now
assert_called_with(MyInterceptor, :delivering_email, [mail]) do
assert_called_with(MySecondInterceptor, :delivering_email, [mail]) do
mail.deliver_now
end
end
end
end
test "being able to put proc's into the defaults hash and they get evaluated on mail sending" do
mail1 = ProcMailer.welcome['X-Proc-Method']
yesterday = 1.day.ago
Time.stubs(:now).returns(yesterday)
mail2 = ProcMailer.welcome['X-Proc-Method']
assert(mail1.to_s.to_i > mail2.to_s.to_i)
Time.stub(:now, yesterday) do
mail2 = ProcMailer.welcome['X-Proc-Method']
assert(mail1.to_s.to_i > mail2.to_s.to_i)
end
end
test 'default values which have to_proc (e.g. symbols) should not be considered procs' do
@ -877,33 +891,50 @@ class BasePreviewInterceptorsTest < ActiveSupport::TestCase
test "you can register a preview interceptor to the mail object that gets passed the mail object before previewing" do
ActionMailer::Base.register_preview_interceptor(MyInterceptor)
mail = BaseMailer.welcome
BaseMailerPreview.any_instance.stubs(:welcome).returns(mail)
MyInterceptor.expects(:previewing_email).with(mail)
BaseMailerPreview.call(:welcome)
stub_any_instance(BaseMailerPreview) do |instance|
instance.stub(:welcome, mail) do
assert_called_with(MyInterceptor, :previewing_email, [mail]) do
BaseMailerPreview.call(:welcome)
end
end
end
end
test "you can register a preview interceptor using its stringified name to the mail object that gets passed the mail object before previewing" do
ActionMailer::Base.register_preview_interceptor("BasePreviewInterceptorsTest::MyInterceptor")
mail = BaseMailer.welcome
BaseMailerPreview.any_instance.stubs(:welcome).returns(mail)
MyInterceptor.expects(:previewing_email).with(mail)
BaseMailerPreview.call(:welcome)
stub_any_instance(BaseMailerPreview) do |instance|
instance.stub(:welcome, mail) do
assert_called_with(MyInterceptor, :previewing_email, [mail]) do
BaseMailerPreview.call(:welcome)
end
end
end
end
test "you can register an interceptor using its symbolized underscored name to the mail object that gets passed the mail object before previewing" do
ActionMailer::Base.register_preview_interceptor(:"base_preview_interceptors_test/my_interceptor")
mail = BaseMailer.welcome
BaseMailerPreview.any_instance.stubs(:welcome).returns(mail)
MyInterceptor.expects(:previewing_email).with(mail)
BaseMailerPreview.call(:welcome)
stub_any_instance(BaseMailerPreview) do |instance|
instance.stub(:welcome, mail) do
assert_called_with(MyInterceptor, :previewing_email, [mail]) do
BaseMailerPreview.call(:welcome)
end
end
end
end
test "you can register multiple preview interceptors to the mail object that both get passed the mail object before previewing" do
ActionMailer::Base.register_preview_interceptors("BasePreviewInterceptorsTest::MyInterceptor", MySecondInterceptor)
mail = BaseMailer.welcome
BaseMailerPreview.any_instance.stubs(:welcome).returns(mail)
MyInterceptor.expects(:previewing_email).with(mail)
MySecondInterceptor.expects(:previewing_email).with(mail)
BaseMailerPreview.call(:welcome)
stub_any_instance(BaseMailerPreview) do |instance|
instance.stub(:welcome, mail) do
assert_called_with(MyInterceptor, :previewing_email, [mail]) do
assert_called_with(MySecondInterceptor, :previewing_email, [mail]) do
BaseMailerPreview.call(:welcome)
end
end
end
end
end
end

View File

@ -102,16 +102,21 @@ class MailDeliveryTest < ActiveSupport::TestCase
end
test "ActionMailer should be told when Mail gets delivered" do
DeliveryMailer.expects(:deliver_mail).once
DeliveryMailer.welcome.deliver_now
DeliveryMailer.delivery_method = :test
assert_called(DeliveryMailer, :deliver_mail) do
DeliveryMailer.welcome.deliver_now
end
end
test "delivery method can be customized per instance" do
Mail::SMTP.any_instance.expects(:deliver!)
email = DeliveryMailer.welcome.deliver_now
assert_instance_of Mail::SMTP, email.delivery_method
email = DeliveryMailer.welcome(delivery_method: :test).deliver_now
assert_instance_of Mail::TestMailer, email.delivery_method
stub_any_instance(Mail::SMTP, instance: Mail::SMTP.new({})) do |instance|
assert_called(instance, :deliver!) do
email = DeliveryMailer.welcome.deliver_now
assert_instance_of Mail::SMTP, email.delivery_method
email = DeliveryMailer.welcome(delivery_method: :test).deliver_now
assert_instance_of Mail::TestMailer, email.delivery_method
end
end
end
test "delivery method can be customized in subclasses not changing the parent" do
@ -176,8 +181,11 @@ class MailDeliveryTest < ActiveSupport::TestCase
old_perform_deliveries = DeliveryMailer.perform_deliveries
begin
DeliveryMailer.perform_deliveries = false
Mail::Message.any_instance.expects(:deliver!).never
DeliveryMailer.welcome.deliver_now
stub_any_instance(Mail::Message) do |instance|
assert_not_called(instance, :deliver!) do
DeliveryMailer.welcome.deliver_now
end
end
ensure
DeliveryMailer.perform_deliveries = old_perform_deliveries
end

View File

@ -53,12 +53,15 @@ class ActionMailerI18nWithControllerTest < ActionDispatch::IntegrationTest
end
def test_send_mail
Mail::SMTP.any_instance.expects(:deliver!)
with_translation 'de', email_subject: '[Anmeldung] Willkommen' do
ActiveSupport::Deprecation.silence do
get '/test/send_mail'
stub_any_instance(Mail::SMTP, instance: Mail::SMTP.new({})) do |instance|
assert_called(instance, :deliver!) do
with_translation 'de', email_subject: '[Anmeldung] Willkommen' do
ActiveSupport::Deprecation.silence do
get '/test/send_mail'
end
assert_equal "Mail sent - Subject: [Anmeldung] Willkommen", @response.body
end
end
assert_equal "Mail sent - Subject: [Anmeldung] Willkommen", @response.body
end
end