diff --git a/spec/workers/share_worker_spec.rb b/spec/workers/share_worker_spec.rb index 5c5c3a3f..988d5300 100644 --- a/spec/workers/share_worker_spec.rb +++ b/spec/workers/share_worker_spec.rb @@ -5,21 +5,29 @@ 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) } describe "#perform" do - subject { ShareWorker.new.perform(user.id, answer.id, 'twitter') } - - before do - Service.create!(type: 'Services::Twitter', - user: user) - end + 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) - subject - expect(ShareWorker.jobs.size).to eq(0) + 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::Forbidden) end end end