diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-17 03:09:16 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-11-17 03:09:16 +0300 |
commit | 678e8181aaa08fc1b89e2a2721c842fb46ed730a (patch) | |
tree | dd7cc73e69d701cddfba08ad19c3c34c1ff2a264 /spec/services/packages | |
parent | b9033ad4157010ccd8f37437de131ed70af90f45 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/packages')
6 files changed, 50 insertions, 15 deletions
diff --git a/spec/services/packages/create_package_file_service_spec.rb b/spec/services/packages/create_package_file_service_spec.rb index 93dde54916a..12fd1039d30 100644 --- a/spec/services/packages/create_package_file_service_spec.rb +++ b/spec/services/packages/create_package_file_service_spec.rb @@ -2,7 +2,10 @@ require 'spec_helper' RSpec.describe Packages::CreatePackageFileService do - let(:package) { create(:maven_package) } + let_it_be(:package) { create(:maven_package) } + let_it_be(:user) { create(:user) } + + subject { described_class.new(package, params) } describe '#execute' do context 'with valid params' do @@ -14,7 +17,7 @@ RSpec.describe Packages::CreatePackageFileService do end it 'creates a new package file' do - package_file = described_class.new(package, params).execute + package_file = subject.execute expect(package_file).to be_valid expect(package_file.file_name).to eq('foo.jar') @@ -29,9 +32,17 @@ RSpec.describe Packages::CreatePackageFileService do end it 'raises an error' do - service = described_class.new(package, params) + expect { subject.execute }.to raise_error(ActiveRecord::RecordInvalid) + end + end + + context 'with a build' do + let_it_be(:pipeline) { create(:ci_pipeline, user: user) } + let(:build) { double('build', pipeline: pipeline) } + let(:params) { { file: Tempfile.new, file_name: 'foo.jar', build: build } } - expect { service.execute }.to raise_error(ActiveRecord::RecordInvalid) + it 'creates a build_info' do + expect { subject.execute }.to change { Packages::PackageFileBuildInfo.count }.by(1) end end end 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 0ae109ef996..907483e3d7f 100644 --- a/spec/services/packages/generic/create_package_file_service_spec.rb +++ b/spec/services/packages/generic/create_package_file_service_spec.rb @@ -5,6 +5,8 @@ require 'spec_helper' RSpec.describe Packages::Generic::CreatePackageFileService do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } + let_it_be(:pipeline) { create(:ci_pipeline, user: user) } + let(:build) { double('build', pipeline: pipeline) } describe '#execute' do let(:sha256) { '440e5e148a25331bbd7991575f7d54933c0ebf6cc735a18ee5066ac1381bb590' } @@ -16,7 +18,8 @@ RSpec.describe Packages::Generic::CreatePackageFileService do package_name: 'mypackage', package_version: '0.0.1', file: file, - file_name: 'myfile.tar.gz.1' + file_name: 'myfile.tar.gz.1', + build: build } end @@ -41,6 +44,7 @@ RSpec.describe Packages::Generic::CreatePackageFileService do service = described_class.new(project, user, params) expect { service.execute }.to change { package.package_files.count }.by(1) + .and change { Packages::PackageFileBuildInfo.count }.by(1) package_file = package.package_files.last aggregate_failures do diff --git a/spec/services/packages/generic/find_or_create_package_service_spec.rb b/spec/services/packages/generic/find_or_create_package_service_spec.rb index 5a9b8b03279..a045cb36418 100644 --- a/spec/services/packages/generic/find_or_create_package_service_spec.rb +++ b/spec/services/packages/generic/find_or_create_package_service_spec.rb @@ -27,7 +27,7 @@ RSpec.describe Packages::Generic::FindOrCreatePackageService do expect(package.creator).to eq(user) expect(package.name).to eq('mypackage') expect(package.version).to eq('0.0.1') - expect(package.build_info).to be_nil + expect(package.original_build_info).to be_nil end end @@ -42,7 +42,7 @@ RSpec.describe Packages::Generic::FindOrCreatePackageService do expect(package.creator).to eq(user) expect(package.name).to eq('mypackage') expect(package.version).to eq('0.0.1') - expect(package.build_info.pipeline).to eq(ci_build.pipeline) + expect(package.original_build_info.pipeline).to eq(ci_build.pipeline) end end end @@ -60,7 +60,7 @@ RSpec.describe Packages::Generic::FindOrCreatePackageService do expect(found_package).to eq(package) end.not_to change { project.packages.generic.count } - expect(package.reload.build_info).to be_nil + expect(package.reload.original_build_info).to be_nil end end @@ -68,7 +68,7 @@ RSpec.describe Packages::Generic::FindOrCreatePackageService do let(:pipeline) { create(:ci_pipeline, project: project) } before do - package.create_build_info!(pipeline: pipeline) + package.build_infos.create!(pipeline: pipeline) end it 'finds the package and does not change package build info even if build is provided' do @@ -80,7 +80,7 @@ RSpec.describe Packages::Generic::FindOrCreatePackageService do expect(found_package).to eq(package) end.not_to change { project.packages.generic.count } - expect(package.reload.build_info.pipeline).to eq(pipeline) + expect(package.reload.original_build_info.pipeline).to eq(pipeline) end end end diff --git a/spec/services/packages/maven/create_package_service_spec.rb b/spec/services/packages/maven/create_package_service_spec.rb index 7ec368aa00f..11bf00c1399 100644 --- a/spec/services/packages/maven/create_package_service_spec.rb +++ b/spec/services/packages/maven/create_package_service_spec.rb @@ -33,8 +33,6 @@ RSpec.describe Packages::Maven::CreatePackageService do expect(package.maven_metadatum.app_version).to eq(version) end - it_behaves_like 'assigns build to package' - it_behaves_like 'assigns the package creator' 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 4406e4037e2..2eaad7db445 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 @@ -10,11 +10,12 @@ RSpec.describe Packages::Maven::FindOrCreatePackageService do let(:version) { '1.0.0' } let(:file_name) { 'test.jar' } let(:param_path) { "#{path}/#{version}" } + let(:params) { { path: param_path, file_name: file_name } } describe '#execute' do using RSpec::Parameterized::TableSyntax - subject { described_class.new(project, user, { path: param_path, file_name: file_name }).execute } + subject { described_class.new(project, user, params).execute } RSpec.shared_examples 'reuse existing package' do it { expect { subject}.not_to change { Packages::Package.count } } @@ -23,7 +24,7 @@ RSpec.describe Packages::Maven::FindOrCreatePackageService do end RSpec.shared_examples 'create package' do - it { expect { subject}.to change { Packages::Package.count }.by(1) } + it { expect { subject }.to change { Packages::Package.count }.by(1) } it 'sets the proper name and version' do pkg = subject @@ -31,6 +32,8 @@ RSpec.describe Packages::Maven::FindOrCreatePackageService do expect(pkg.name).to eq(path) expect(pkg.version).to eq(version) end + + it_behaves_like 'assigns build to package' end context 'path with version' do @@ -77,5 +80,15 @@ RSpec.describe Packages::Maven::FindOrCreatePackageService do end end end + + context 'with a build' do + let_it_be(:pipeline) { create(:ci_pipeline, user: user) } + let(:build) { double('build', pipeline: pipeline) } + let(:params) { { path: param_path, file_name: file_name, build: build } } + + it 'creates a build_info' do + expect { subject }.to change { Packages::BuildInfo.count }.by(1) + end + end end end diff --git a/spec/services/packages/npm/create_package_service_spec.rb b/spec/services/packages/npm/create_package_service_spec.rb index c8431c640da..6db3777cde8 100644 --- a/spec/services/packages/npm/create_package_service_spec.rb +++ b/spec/services/packages/npm/create_package_service_spec.rb @@ -48,7 +48,16 @@ RSpec.describe Packages::Npm::CreatePackageService do context 'scoped package' do it_behaves_like 'valid package' - it_behaves_like 'assigns build to package' + context 'with build info' do + let(:job) { create(:ci_build, user: user) } + let(:params) { super().merge(build: job) } + + it_behaves_like 'assigns build to package' + + it 'creates a package file build info' do + expect { subject }.to change { Packages::PackageFileBuildInfo.count }.by(1) + end + end end context 'invalid package name' do |