diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-24 06:10:40 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-24 06:10:40 +0300 |
commit | 095467eafbd243520828272de0926da3cbc71761 (patch) | |
tree | 19f6d7f16bbaf5c97bbd9aed4c1555d10df4d8ef /spec/services | |
parent | 47dc0510755f474fdd2369dfbbaaa019053b4492 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/packages/generic/create_package_file_service_spec.rb | 31 | ||||
-rw-r--r-- | spec/services/packages/maven/find_or_create_package_service_spec.rb | 13 |
2 files changed, 44 insertions, 0 deletions
diff --git a/spec/services/packages/generic/create_package_file_service_spec.rb b/spec/services/packages/generic/create_package_file_service_spec.rb index 1c9eb53cfc7..9d6784b7721 100644 --- a/spec/services/packages/generic/create_package_file_service_spec.rb +++ b/spec/services/packages/generic/create_package_file_service_spec.rb @@ -105,6 +105,37 @@ RSpec.describe Packages::Generic::CreatePackageFileService do it { expect { execute_service }.to change { project.package_files.count }.by(1) } end end + + context 'with multiple files for the same package and the same pipeline' do + let(:file_2_params) { params.merge(file_name: 'myfile.tar.gz.2', file: file2) } + let(:file_3_params) { params.merge(file_name: 'myfile.tar.gz.3', file: file3) } + + let(:temp_file2) { Tempfile.new("test2") } + let(:temp_file3) { Tempfile.new("test3") } + + let(:file2) { UploadedFile.new(temp_file2.path, sha256: sha256) } + let(:file3) { UploadedFile.new(temp_file3.path, sha256: sha256) } + + before do + FileUtils.touch(temp_file2) + FileUtils.touch(temp_file3) + expect(::Packages::Generic::FindOrCreatePackageService).to receive(:new).with(project, user, package_params).and_return(package_service).twice + expect(package_service).to receive(:execute).and_return(package).twice + end + + after do + FileUtils.rm_f(temp_file2) + FileUtils.rm_f(temp_file3) + end + + it 'creates the build info only once' do + expect do + described_class.new(project, user, params).execute + described_class.new(project, user, file_2_params).execute + described_class.new(project, user, file_3_params).execute + end.to change { package.build_infos.count }.by(1) + end + end end end end diff --git a/spec/services/packages/maven/find_or_create_package_service_spec.rb b/spec/services/packages/maven/find_or_create_package_service_spec.rb index d8b48af0121..59f5677f526 100644 --- a/spec/services/packages/maven/find_or_create_package_service_spec.rb +++ b/spec/services/packages/maven/find_or_create_package_service_spec.rb @@ -98,6 +98,19 @@ RSpec.describe Packages::Maven::FindOrCreatePackageService do it 'creates a build_info' do expect { subject }.to change { Packages::BuildInfo.count }.by(1) end + + context 'with multiple files for the same package and the same pipeline' do + let(:file_2_params) { params.merge(file_name: 'test2.jar') } + let(:file_3_params) { params.merge(file_name: 'test3.jar') } + + it 'creates a single build info' do + expect do + described_class.new(project, user, params).execute + described_class.new(project, user, file_2_params).execute + described_class.new(project, user, file_3_params).execute + end.to change { ::Packages::BuildInfo.count }.by(1) + end + end end context 'when package duplicates are not allowed' do |