trabajo-afectivo/spec/models/ticket/article/enqueue_communicate_facebook_job_spec.rb

44 lines
1.2 KiB
Ruby
Raw Permalink Normal View History

2022-01-01 13:38:12 +00:00
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
RSpec.describe Ticket::Article::EnqueueCommunicateFacebookJob, performs_jobs: true do
before { allow(Delayed::Job).to receive(:enqueue).and_call_original }
let(:article) { create(:ticket_article, **(try(:factory_options) || {})) }
shared_examples 'for no-op' do
it 'is a no-op' do
expect { article }.not_to have_enqueued_job(CommunicateFacebookJob)
end
end
shared_examples 'for success' do
it 'enqueues the Facebook background job' do
expect { article }.to have_enqueued_job(CommunicateFacebookJob)
end
end
context 'when in Import Mode' do
before { Setting.set('import_mode', true) }
include_examples 'for no-op'
end
context 'when article is created during Channel::EmailParser#process', application_handle: 'scheduler.postmaster' do
include_examples 'for no-op'
end
context 'when article is from a customer' do
let(:factory_options) { { sender_name: 'Customer' } }
include_examples 'for no-op'
end
context 'when article is a facebook post' do
let(:factory_options) { { sender_name: 'Agent', type_name: 'facebook feed post' } }
include_examples 'for success'
end
end