Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers/packages/rubygems/extraction_worker_spec.rb')
-rw-r--r--spec/workers/packages/rubygems/extraction_worker_spec.rb36
1 files changed, 24 insertions, 12 deletions
diff --git a/spec/workers/packages/rubygems/extraction_worker_spec.rb b/spec/workers/packages/rubygems/extraction_worker_spec.rb
index 15c0a3be90c..0e67f3ac62e 100644
--- a/spec/workers/packages/rubygems/extraction_worker_spec.rb
+++ b/spec/workers/packages/rubygems/extraction_worker_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe Packages::Rubygems::ExtractionWorker, type: :worker do
describe '#perform' do
- let_it_be(:package) { create(:rubygems_package) }
+ let_it_be(:package) { create(:rubygems_package, :processing) }
let(:package_file) { package.package_files.first }
let(:package_file_id) { package_file.id }
@@ -14,15 +14,13 @@ RSpec.describe Packages::Rubygems::ExtractionWorker, type: :worker do
subject { described_class.new.perform(*job_args) }
- include_examples 'an idempotent worker' do
- it 'processes the gem', :aggregate_failures do
- expect { subject }
- .to change { Packages::Package.count }.by(0)
- .and change { Packages::PackageFile.count }.by(2)
+ it 'processes the gem', :aggregate_failures do
+ expect { subject }
+ .to change { Packages::Package.count }.by(0)
+ .and change { Packages::PackageFile.count }.by(1)
- expect(Packages::Package.last.id).to be(package.id)
- expect(package.name).not_to be(package_name)
- end
+ expect(Packages::Package.last.id).to be(package.id)
+ expect(package.name).not_to be(package_name)
end
it 'handles a processing failure', :aggregate_failures do
@@ -34,9 +32,23 @@ RSpec.describe Packages::Rubygems::ExtractionWorker, type: :worker do
project_id: package.project_id
)
- expect { subject }
- .to change { Packages::Package.count }.by(-1)
- .and change { Packages::PackageFile.count }.by(-2)
+ subject
+
+ expect(package.reload).to be_error
+ end
+
+ it 'handles processing an unaccounted for error', :aggregate_failures do
+ expect(::Packages::Rubygems::ProcessGemService).to receive(:new)
+ .and_raise(Zip::Error)
+
+ expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
+ instance_of(Zip::Error),
+ project_id: package.project_id
+ )
+
+ subject
+
+ expect(package.reload).to be_error
end
context 'returns when there is no package file' do