Retrospring/spec/workers/share_worker_spec.rb

49 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe ShareWorker do
let(:user) { FactoryBot.create(:user) }
let(:answer) { FactoryBot.create(:answer, user: user) }
let!(:service) { Services::Twitter.create!(type: 'Services::Twitter',
user: user) }
before do
stub_const("APP_CONFIG", {
'hostname' => 'example.com',
'anonymous_name' => 'Anonymous',
'https' => true,
'items_per_page' => 5,
'sharing' => {
'twitter' => {
'consumer_key' => '',
}
}
})
end
describe "#perform" do
subject {
Sidekiq::Testing.fake! do
ShareWorker.perform_async(user.id, answer.id, 'twitter')
end
}
context 'when answer doesn\'t exist' do
it 'prevents the job from retrying and logs a message' do
answer.destroy!
Sidekiq.logger.should_receive(:info)
expect { subject }.to change(ShareWorker.jobs, :size).by(1)
expect { ShareWorker.drain }.to change(ShareWorker.jobs, :size).by(-1)
end
end
context 'when answer exists' do
it 'retries on unhandled exceptions' do
expect { subject }.to change(ShareWorker.jobs, :size).by(1)
expect { ShareWorker.drain }.to raise_error(Twitter::Error::BadRequest)
end
end
end
end