mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-03 04:27:53 +00:00
# Pull Request Template ## Description Fixes [CW-4620](https://linear.app/chatwoot/issue/CW-4620/rethinking-custom-domains-in-chatwoot) <img width="642" height="187" alt="Screenshot 2025-07-29 at 8 17 44 PM" src="https://github.com/user-attachments/assets/ad2f5dac-4b27-4dce-93ca-6cbba74443fb" /> ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Vishnu Narayanan <iamwishnu@gmail.com> Co-authored-by: Pranav <pranavrajs@gmail.com> Co-authored-by: Pranav <pranav@chatwoot.com>
51 lines
1.9 KiB
Ruby
51 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe PortalInstructionsMailer do
|
|
describe 'send_cname_instructions' do
|
|
let!(:account) { create(:account) }
|
|
let!(:portal) { create(:portal, account: account, custom_domain: 'help.example.com') }
|
|
let(:recipient_email) { 'admin@example.com' }
|
|
let(:class_instance) { described_class.new }
|
|
|
|
before do
|
|
allow(described_class).to receive(:new).and_return(class_instance)
|
|
allow(class_instance).to receive(:smtp_config_set_or_development?).and_return(true)
|
|
end
|
|
|
|
context 'when target domain is available' do
|
|
it 'sends email with cname instructions' do
|
|
with_modified_env HELPCENTER_URL: 'https://help.chatwoot.com' do
|
|
mail = described_class.send_cname_instructions(portal: portal, recipient_email: recipient_email).deliver_now
|
|
|
|
expect(mail.to).to eq([recipient_email])
|
|
expect(mail.subject).to eq("Finish setting up #{portal.custom_domain}")
|
|
expect(mail.body.encoded).to include('help.example.com CNAME help.chatwoot.com')
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when helpcenter url is not available but frontend url is' do
|
|
it 'uses frontend url as target domain' do
|
|
with_modified_env HELPCENTER_URL: '', FRONTEND_URL: 'https://app.chatwoot.com' do
|
|
mail = described_class.send_cname_instructions(portal: portal, recipient_email: recipient_email).deliver_now
|
|
|
|
expect(mail.to).to eq([recipient_email])
|
|
expect(mail.body.encoded).to include('help.example.com CNAME app.chatwoot.com')
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when no target domain is available' do
|
|
it 'does not send email' do
|
|
with_modified_env HELPCENTER_URL: '', FRONTEND_URL: '' do
|
|
mail = described_class.send_cname_instructions(portal: portal, recipient_email: recipient_email).deliver_now
|
|
|
|
expect(mail).to be_nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|