From f870c4d063f6ac3b5fe96670955a08fcd7e15e67 Mon Sep 17 00:00:00 2001 From: Arthur Neves Date: Sat, 15 Mar 2014 18:56:32 -0400 Subject: [PATCH] Fix MailerPreview broken tests `BaseMailerPreview.welcome` is an instance method, so we need to stub the method on a instance level and not on Class. The stub is important to make sure the Message object is the same in the other expectations. This was working randomly because Mocha uses == to compare two objects on the `with()` expectation and even if the Mail::Message objects were not the same object they are equal, but thats not the case in 100% of the runs. So we need to make sure we use `.any_instance` method and have the right message object. --- actionmailer/test/base_test.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb index d4a89a17ee..b66e5bd6a3 100644 --- a/actionmailer/test/base_test.rb +++ b/actionmailer/test/base_test.rb @@ -594,7 +594,7 @@ class BaseTest < 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.stubs(:welcome).returns(mail) + BaseMailerPreview.any_instance.stubs(:welcome).returns(mail) MyInterceptor.expects(:previewing_email).with(mail) BaseMailerPreview.call(:welcome) end @@ -602,7 +602,7 @@ class BaseTest < ActiveSupport::TestCase 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("BaseTest::MyInterceptor") mail = BaseMailer.welcome - BaseMailerPreview.stubs(:welcome).returns(mail) + BaseMailerPreview.any_instance.stubs(:welcome).returns(mail) MyInterceptor.expects(:previewing_email).with(mail) BaseMailerPreview.call(:welcome) end @@ -610,7 +610,7 @@ class BaseTest < ActiveSupport::TestCase 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_test/my_interceptor") mail = BaseMailer.welcome - BaseMailerPreview.stubs(:welcome).returns(mail) + BaseMailerPreview.any_instance.stubs(:welcome).returns(mail) MyInterceptor.expects(:previewing_email).with(mail) BaseMailerPreview.call(:welcome) end @@ -618,7 +618,7 @@ class BaseTest < ActiveSupport::TestCase 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("BaseTest::MyInterceptor", MySecondInterceptor) mail = BaseMailer.welcome - BaseMailerPreview.stubs(:welcome).returns(mail) + BaseMailerPreview.any_instance.stubs(:welcome).returns(mail) MyInterceptor.expects(:previewing_email).with(mail) MySecondInterceptor.expects(:previewing_email).with(mail) BaseMailerPreview.call(:welcome)