123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- require 'rails_helper'
- RSpec.describe Issue2541FixNotificationEmailWithoutBody, type: :db_migration do
- describe '"body" attribute management' do
- # We use #update_columns to bypass callbacks
- # that would prevent the record from being saved with an empty body
- before { subject.update_columns(perform: perform) }
- let(:perform) do
- {
- type => {
- 'body' => '',
- 'recipient' => 'article_last_sender',
- 'subject' => 'Thanks for your inquiry (#{ticket.title})', # rubocop:disable Lint/InterpolationCheck
- },
- }
- end
- context 'when migrating Triggers' do
- subject(:trigger) { create(:trigger) }
- context 'for email' do
- let(:type) { 'notification.email' }
- it "updates empty perform['notification.email']['body'] attribute" do
- expect { migrate }.to change { trigger.reload.perform['notification.email']['body'] }.from('').to('-')
- end
- end
- context 'for SMS' do
- let(:type) { 'notification.sms' }
- it "updates empty perform['notification.sms']['body'] attribute" do
- expect { migrate }.to change { trigger.reload.perform['notification.sms']['body'] }.from('').to('-')
- end
- end
- end
- context 'when migrating Jobs' do
- subject(:job) { create(:job) }
- let(:type) { 'notification.email' }
- it "updates empty perform['notification.email']['body'] attribute" do
- expect { migrate }.to change { job.reload.perform['notification.email']['body'] }.from('').to('-')
- end
- context 'when selector contains current_user.id' do
- subject(:job) do
- UserInfo.ensure_current_user_id do
- create(:job, condition: { 'ticket.owner_id' => { 'operator' => 'is', 'pre_condition' => 'current_user.id', 'value' => '', 'value_completion' => '' } } )
- end
- end
- let(:type) { 'notification.email' }
- it "updates empty perform['notification.email']['body'] attribute" do
- expect { migrate }.to change { job.reload.perform['notification.email']['body'] }.from('').to('-')
- end
- end
- end
- end
- describe 'scheduler management' do
- let(:scheduler) { Scheduler.find_by(method: 'Job.run') }
- before { scheduler.update!(active: false) }
- it "re-enables 'Job.run' Scheduler" do
- expect { migrate }.to change { scheduler.reload.active }.to(true)
- end
- end
- end
|