diff options
Diffstat (limited to 'spec/workers/design_management/new_version_worker_spec.rb')
-rw-r--r-- | spec/workers/design_management/new_version_worker_spec.rb | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/workers/design_management/new_version_worker_spec.rb b/spec/workers/design_management/new_version_worker_spec.rb new file mode 100644 index 00000000000..ef7cd8de108 --- /dev/null +++ b/spec/workers/design_management/new_version_worker_spec.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe DesignManagement::NewVersionWorker do + describe '#perform' do + let(:worker) { described_class.new } + + context 'the id is wrong or out-of-date' do + let(:version_id) { -1 } + + it 'does not create system notes' do + expect(SystemNoteService).not_to receive(:design_version_added) + + worker.perform(version_id) + end + + it 'does not invoke GenerateImageVersionsService' do + expect(DesignManagement::GenerateImageVersionsService).not_to receive(:new) + + worker.perform(version_id) + end + + it 'logs the reason for this failure' do + expect(Sidekiq.logger).to receive(:warn) + .with(an_instance_of(ActiveRecord::RecordNotFound)) + + worker.perform(version_id) + end + end + + context 'the version id is valid' do + let_it_be(:version) { create(:design_version, :with_lfs_file, designs_count: 2) } + + it 'creates a system note' do + expect { worker.perform(version.id) }.to change { Note.system.count }.by(1) + end + + it 'invokes GenerateImageVersionsService' do + expect_next_instance_of(DesignManagement::GenerateImageVersionsService) do |service| + expect(service).to receive(:execute) + end + + worker.perform(version.id) + end + + it 'does not log anything' do + expect(Sidekiq.logger).not_to receive(:warn) + + worker.perform(version.id) + end + end + + context 'the version includes multiple types of action' do + let_it_be(:version) do + create(:design_version, :with_lfs_file, + created_designs: create_list(:design, 1, :with_lfs_file), + modified_designs: create_list(:design, 1)) + end + + it 'creates two system notes' do + expect { worker.perform(version.id) }.to change { Note.system.count }.by(2) + end + + it 'calls design_version_added' do + expect(SystemNoteService).to receive(:design_version_added).with(version) + + worker.perform(version.id) + end + end + end +end |