From a103e4e94772f2bd6335b32ad0f7038d0b0244ca Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Sat, 14 Sep 2024 19:29:13 +0200 Subject: [PATCH] Fix sidekiq workers specs --- .rubocop_todo.yml | 9 -- .../colore/sidekiq/callback_worker_spec.rb | 29 ++++++ .../colore/sidekiq/conversion_worker_spec.rb | 39 ++++++++ .../sidekiq/legacy_purge_worker_spec.rb | 36 ++++++++ spec/lib/sidekiq_workers_spec.rb | 88 ------------------- 5 files changed, 104 insertions(+), 97 deletions(-) create mode 100644 spec/lib/colore/sidekiq/callback_worker_spec.rb create mode 100644 spec/lib/colore/sidekiq/conversion_worker_spec.rb create mode 100644 spec/lib/colore/sidekiq/legacy_purge_worker_spec.rb delete mode 100644 spec/lib/sidekiq_workers_spec.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 48fcc45..8d21994 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -194,7 +194,6 @@ RSpec/InstanceVariable: Exclude: - 'spec/heathen/processor_methods/libreoffice_spec.rb' - 'spec/lib/autoheathen/config_spec.rb' - - 'spec/lib/sidekiq_workers_spec.rb' # Configuration parameters: EnforcedStyle. # SupportedStyles: have_received, receive @@ -203,11 +202,6 @@ RSpec/MessageSpies: - 'spec/lib/app_spec.rb' - 'spec/lib/autoheathen/email_processor_spec.rb' - 'spec/lib/config_spec.rb' - - 'spec/lib/sidekiq_workers_spec.rb' - -RSpec/MultipleDescribes: - Exclude: - - 'spec/lib/sidekiq_workers_spec.rb' # Configuration parameters: AllowedPatterns. # AllowedPatterns: ^expect_, ^assert_ @@ -219,7 +213,6 @@ RSpec/StubbedMock: Exclude: - 'spec/lib/app_spec.rb' - 'spec/lib/config_spec.rb' - - 'spec/lib/sidekiq_workers_spec.rb' # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames. RSpec/VerifiedDoubles: @@ -227,7 +220,6 @@ RSpec/VerifiedDoubles: - 'spec/lib/app_spec.rb' - 'spec/lib/converter_spec.rb' - 'spec/lib/legacy_converter_spec.rb' - - 'spec/lib/sidekiq_workers_spec.rb' # This cop supports unsafe autocorrection (--autocorrect-all). Security/YAMLLoad: @@ -502,7 +494,6 @@ Style/StringConcatenation: - 'lib/heathen.rb' - 'lib/heathen/processor.rb' - 'lib/sidekiq_app.rb' - - 'spec/lib/sidekiq_workers_spec.rb' - 'unicorn.rb' # This cop supports safe autocorrection (--autocorrect). diff --git a/spec/lib/colore/sidekiq/callback_worker_spec.rb b/spec/lib/colore/sidekiq/callback_worker_spec.rb new file mode 100644 index 0000000..a4d8f83 --- /dev/null +++ b/spec/lib/colore/sidekiq/callback_worker_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +require 'rest_client' + +RSpec.describe Colore::Sidekiq::CallbackWorker do + let(:doc_key) { Colore::DocKey.new('app', '12345') } + let(:callback_url) { 'https://example.org/callback' } + + before do + setup_storage + allow(Colore::C_).to receive(:storage_directory) { tmp_storage_dir } + end + + after do + delete_storage + end + + describe '#perform' do + it 'runs' do + allow(RestClient).to receive(:post) + + described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url, 250, 'foobar' + + expect(RestClient).to have_received(:post).with(callback_url, an_instance_of(Hash)) + end + end +end diff --git a/spec/lib/colore/sidekiq/conversion_worker_spec.rb b/spec/lib/colore/sidekiq/conversion_worker_spec.rb new file mode 100644 index 0000000..b07ae0c --- /dev/null +++ b/spec/lib/colore/sidekiq/conversion_worker_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Colore::Sidekiq::ConversionWorker do + let(:doc_key) { Colore::DocKey.new('app', '12345') } + let(:callback_url) { 'http://foo/bar' } + let(:converter) { instance_double(Colore::Converter, convert: true) } + + before do + allow(Colore::Converter).to receive(:new).and_return(converter) + allow(Colore::Sidekiq::CallbackWorker).to receive(:perform_async) + end + + describe '#perform' do + it 'runs' do + described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url + + expect(Colore::Sidekiq::CallbackWorker).to have_received(:perform_async) + expect(converter).to have_received(:convert) + end + + it 'gives up on Heathen::TaskNotFound' do + allow(converter).to receive(:convert).and_raise Heathen::TaskNotFound.new('foo', 'bar') + + described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url + + expect(Colore::Sidekiq::CallbackWorker).to have_received(:perform_async) + end + + it 'gives up on other errors' do + allow(converter).to receive(:convert).and_raise 'arglebargle' + + described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url + + expect(Colore::Sidekiq::CallbackWorker).to have_received(:perform_async) + end + end +end diff --git a/spec/lib/colore/sidekiq/legacy_purge_worker_spec.rb b/spec/lib/colore/sidekiq/legacy_purge_worker_spec.rb new file mode 100644 index 0000000..2279dd2 --- /dev/null +++ b/spec/lib/colore/sidekiq/legacy_purge_worker_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Colore::Sidekiq::LegacyPurgeWorker do + before do + setup_storage + allow(Colore::C_).to receive(:storage_directory) { tmp_storage_dir } + allow(Colore::C_).to receive(:legacy_purge_days).and_return(2) + end + + after do + delete_storage + end + + describe '#perform' do + it 'runs' do + dir = Colore::LegacyConverter.new.legacy_dir + file1 = dir.join('file1.tiff') + file2 = dir.join('file2.tiff') + file1.write('foobar') + file2.write('foobar') + described_class.new.perform + expect(file1.file?).to be true + expect(file2.file?).to be true + Timecop.freeze(Date.today + 1) + described_class.new.perform + expect(file1.file?).to be true + expect(file2.file?).to be true + Timecop.freeze(Date.today + 3) + described_class.new.perform + expect(file1.file?).to be false + expect(file2.file?).to be false + end + end +end diff --git a/spec/lib/sidekiq_workers_spec.rb b/spec/lib/sidekiq_workers_spec.rb deleted file mode 100644 index 0e027be..0000000 --- a/spec/lib/sidekiq_workers_spec.rb +++ /dev/null @@ -1,88 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' -require 'rest_client' - -RSpec.describe Colore::Sidekiq::ConversionWorker do - let(:doc_key) { Colore::DocKey.new('app', '12345') } - let(:callback_url) { 'http://foo/bar' } - - before do - @mock_converter = double(Colore::Converter) - allow(Colore::Converter).to receive(:new) { @mock_converter } - allow(@mock_converter).to receive(:convert) - end - - describe '#perform' do - it 'runs' do - expect(Colore::Sidekiq::CallbackWorker).to receive(:perform_async) - described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url - end - - it 'gives up on Heathen::TaskNotFound' do - allow(@mock_converter).to receive(:convert) { raise Heathen::TaskNotFound.new('foo', 'bar') } - expect(Colore::Sidekiq::CallbackWorker).to receive(:perform_async).and_return(nil) - described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url - end - - it 'gives up on other errors' do - allow(@mock_converter).to receive(:convert) { raise 'arglebargle' } - expect(Colore::Sidekiq::CallbackWorker).to receive(:perform_async).and_return(nil) - described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url - end - end -end - -RSpec.describe Colore::Sidekiq::CallbackWorker do - let(:doc_key) { Colore::DocKey.new('app', '12345') } - let(:callback_url) { 'http://foo/bar' } - - before do - setup_storage - allow(Colore::C_).to receive(:storage_directory) { tmp_storage_dir } - end - - after do - delete_storage - end - - describe '#perform' do - it 'runs' do - expect(RestClient).to receive(:post).with(callback_url, Hash) - described_class.new.perform doc_key.to_s, 'current', 'arglebargle.docx', 'pdf', callback_url, 250, 'foobar' - end - end -end - -RSpec.describe Colore::Sidekiq::LegacyPurgeWorker do - before do - setup_storage - allow(Colore::C_).to receive(:storage_directory) { tmp_storage_dir } - allow(Colore::C_).to receive(:legacy_purge_days).and_return(2) - end - - after do - delete_storage - end - - describe '#perform' do - it 'runs' do - dir = Colore::LegacyConverter.new.legacy_dir - file1 = dir + 'file1.tiff' - file2 = dir + 'file2.tiff' - file1.open('w') { |f| f.write 'foobar' } - file2.open('w') { |f| f.write 'foobar' } - described_class.new.perform - expect(file1.file?).to be true - expect(file2.file?).to be true - Timecop.freeze(Date.today + 1) - described_class.new.perform - expect(file1.file?).to be true - expect(file2.file?).to be true - Timecop.freeze(Date.today + 3) - described_class.new.perform - expect(file1.file?).to be false - expect(file2.file?).to be false - end - end -end