diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 1fc1410e0..1fd9a1c47 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -3,6 +3,7 @@ class ApplicationMailer < ActionMailer::Base default from: proc { "#{Setting["mailer_from_name"]} <#{Setting["mailer_from_address"]}>" } layout "mailer" before_action :set_asset_host + before_action :set_variant after_action :set_smtp_settings def default_url_options @@ -13,6 +14,10 @@ class ApplicationMailer < ActionMailer::Base self.asset_host ||= root_url.delete_suffix("/") end + def set_variant + lookup_context.variants = [Tenant.current_schema.to_sym] + end + def set_smtp_settings unless Tenant.default? mail.delivery_method.settings.merge!(Tenant.current_secrets.smtp_settings.to_h) diff --git a/spec/mailers/application_mailer_spec.rb b/spec/mailers/application_mailer_spec.rb index 665dcca53..211c8f8ed 100644 --- a/spec/mailers/application_mailer_spec.rb +++ b/spec/mailers/application_mailer_spec.rb @@ -78,4 +78,22 @@ describe ApplicationMailer do end end end + + describe "#set_variant" do + let(:mailer) { ApplicationMailer.new } + + it "uses the default tenant by default" do + mailer.set_variant + + expect(mailer.lookup_context.variants).to eq [:public] + end + + it "uses the current tenant schema when defined" do + allow(Tenant).to receive(:current_schema).and_return("random-name") + + mailer.set_variant + + expect(mailer.lookup_context.variants).to eq [:"random-name"] + end + end end