From 6f9a7361151bb36da321f4934e5812bce1b4ddc9 Mon Sep 17 00:00:00 2001 From: Marcos Ferreira Date: Tue, 29 Oct 2019 14:11:26 -0300 Subject: [PATCH] wip --- app/mailers/devise/mailer.rb | 2 +- .../mailers/confirmation_instructions_test.rb | 3 ++ test/mailers/mailer_test.rb | 33 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/mailers/devise/mailer.rb b/app/mailers/devise/mailer.rb index 11ef449c..eca18913 100644 --- a/app/mailers/devise/mailer.rb +++ b/app/mailers/devise/mailer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -if defined?(ActionMailer) +if Object.const_defined?(Devise.parent_mailer) class Devise::Mailer < Devise.parent_mailer.constantize include Devise::Mailers::Helpers diff --git a/test/mailers/confirmation_instructions_test.rb b/test/mailers/confirmation_instructions_test.rb index 358b092c..55728c40 100644 --- a/test/mailers/confirmation_instructions_test.rb +++ b/test/mailers/confirmation_instructions_test.rb @@ -102,10 +102,13 @@ class ConfirmationInstructionsTest < ActionMailer::TestCase test 'renders a scoped if scoped_views is set in the mailer class' do begin + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" Devise::Mailer.scoped_views = true assert_equal user.email, mail.body.decoded ensure Devise::Mailer.send :remove_instance_variable, :@scoped_views + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) end end diff --git a/test/mailers/mailer_test.rb b/test/mailers/mailer_test.rb index f8369052..310c2e35 100644 --- a/test/mailers/mailer_test.rb +++ b/test/mailers/mailer_test.rb @@ -4,6 +4,8 @@ require "test_helper" class MailerTest < ActionMailer::TestCase test "pass given block to #mail call" do + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" class TestMailer < Devise::Mailer def confirmation_instructions(record, token, opts = {}) @token = token @@ -17,4 +19,35 @@ class MailerTest < ActionMailer::TestCase assert mail.content_transfer_encoding, "7bit" end + + # test 'correctly uses ActionMailer::Base as default parent_mailer' do + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" + # assert Devise::Mailer.superclass == ActionMailer::Base + # end + + # test 'correctly inherits from Devise.parent_mailer' do + # class ::TestParentMailer; end + # swap Devise, parent_mailer: 'TestParentMailer' do + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" + # assert Devise::Mailer.superclass == TestParentMailer + # end + # end + + # test 'do not define Devise::Mailer when Devise.parent_mailer class is not defined' do + # swap Devise, parent_mailer: 'NotDefinedParentMailer' do + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" + # refute defined?(Devise::Mailer) + # end + # end + + # test 'defines Devise::Mailer when Devise.parent_mailer class is defined' do + # swap Devise, parent_mailer: 'DefinedParentMailer' do + # Devise.send(:remove_const, :Mailer) if defined?(Devise::Mailer) + # load "#{Devise::Engine.root}/app/mailers/devise/mailer.rb" + # assert defined?(Devise::Mailer) + # end + # end end