Chatwoot/spec/lib/email_templates/db_resolver_service_spec.rb

81 lines
2.6 KiB
Ruby
Raw Permalink Normal View History

require 'rails_helper'
describe ::EmailTemplates::DbResolverService do
subject(:resolver) { described_class.using(EmailTemplate, {}) }
describe '#find_templates' do
context 'when template does not exist in db' do
it 'return empty array' do
expect(resolver.find_templates('test', '', false, [])).to eq([])
end
end
context 'when installation template exist in db' do
it 'return installation template' do
email_template = create(:email_template, name: 'test', body: 'test')
handler = ActionView::Template.registered_template_handler(:liquid)
template_details = {
locals: [],
format: Mime['html'].to_sym,
virtual_path: 'test'
}
expect(
resolver.find_templates('test', '', false, []).first.inspect
).to eq(
ActionView::Template.new(
email_template.body,
"DB Template - #{email_template.id}", handler, **template_details
).inspect
)
end
end
context 'when account template exists in db' do
let(:account) { create(:account) }
let!(:installation_template) { create(:email_template, name: 'test', body: 'test') }
let!(:account_template) { create(:email_template, name: 'test', body: 'test2', account: account) }
it 'return account template for current account' do
Current.account = account
handler = ActionView::Template.registered_template_handler(:liquid)
template_details = {
locals: [],
format: Mime['html'].to_sym,
virtual_path: 'test'
}
expect(
resolver.find_templates('test', '', false, []).first.inspect
).to eq(
ActionView::Template.new(
account_template.body,
"DB Template - #{account_template.id}", handler, **template_details
).inspect
)
Current.account = nil
end
it 'return installation template when current account dont have template' do
Current.account = create(:account)
handler = ActionView::Template.registered_template_handler(:liquid)
template_details = {
locals: [],
format: Mime['html'].to_sym,
virtual_path: 'test'
}
expect(
resolver.find_templates('test', '', false, []).first.inspect
).to eq(
ActionView::Template.new(
installation_template.body,
"DB Template - #{installation_template.id}", handler, **template_details
).inspect
)
Current.account = nil
end
end
end
end