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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-16 00:09:35 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-16 00:09:35 +0300
commit7dc8bd3c16a6f8367fdee691711d3313e2efc3c6 (patch)
tree86108a4c223fd6f0d0c461446e243c413723d1f0 /spec/presenters/packages
parentf784f7d3b19fe80834240bde23d1300accb01118 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/presenters/packages')
-rw-r--r--spec/presenters/packages/conan/package_presenter_spec.rb91
1 files changed, 71 insertions, 20 deletions
diff --git a/spec/presenters/packages/conan/package_presenter_spec.rb b/spec/presenters/packages/conan/package_presenter_spec.rb
index 61787f5870e..4e8af752f3e 100644
--- a/spec/presenters/packages/conan/package_presenter_spec.rb
+++ b/spec/presenters/packages/conan/package_presenter_spec.rb
@@ -7,15 +7,34 @@ RSpec.describe ::Packages::Conan::PackagePresenter do
let_it_be(:package) { create(:conan_package) }
let_it_be(:project) { package.project }
let_it_be(:conan_package_reference) { '123456789'}
+ let(:params) { { package_scope: :instance } }
- describe '#recipe_urls' do
- subject { described_class.new(package, user, project).recipe_urls }
-
- context 'no existing package' do
+ shared_examples 'no existing package' do
+ context 'when package does not exist' do
let(:package) { nil }
it { is_expected.to be_empty }
end
+ end
+
+ shared_examples 'conan_file_metadatum is not found' do
+ context 'when no conan_file_metadatum exists' do
+ before do
+ package.package_files.each do |file|
+ file.conan_file_metadatum.delete
+ file.reload
+ end
+ end
+
+ it { is_expected.to be_empty }
+ end
+ end
+
+ describe '#recipe_urls' do
+ subject { described_class.new(package, user, project, params).recipe_urls }
+
+ it_behaves_like 'no existing package'
+ it_behaves_like 'conan_file_metadatum is not found'
context 'existing package' do
let(:expected_result) do
@@ -33,17 +52,28 @@ RSpec.describe ::Packages::Conan::PackagePresenter do
it { is_expected.to eq(expected_result) }
end
+
+ context 'with package_scope of project' do
+ # #recipe_file_url checks for params[:id]
+ let(:params) { { id: project.id } }
+
+ let(:expected_result) do
+ {
+ "conanfile.py" => "#{Settings.build_base_gitlab_url}/api/v4/projects/#{project.id}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanfile.py",
+ "conanmanifest.txt" => "#{Settings.build_base_gitlab_url}/api/v4/projects/#{project.id}/packages/conan/v1/files/#{package.conan_recipe_path}/0/export/conanmanifest.txt"
+ }
+ end
+
+ it { is_expected.to eq(expected_result) }
+ end
end
end
describe '#recipe_snapshot' do
subject { described_class.new(package, user, project).recipe_snapshot }
- context 'no existing package' do
- let(:package) { nil }
-
- it { is_expected.to be_empty }
- end
+ it_behaves_like 'no existing package'
+ it_behaves_like 'conan_file_metadatum is not found'
context 'existing package' do
let(:expected_result) do
@@ -60,17 +90,21 @@ RSpec.describe ::Packages::Conan::PackagePresenter do
describe '#package_urls' do
let(:reference) { conan_package_reference }
+ let(:params) do
+ {
+ conan_package_reference: reference,
+ package_scope: :instance
+ }
+ end
+
subject do
described_class.new(
- package, user, project, conan_package_reference: reference
+ package, user, project, params
).package_urls
end
- context 'no existing package' do
- let(:package) { nil }
-
- it { is_expected.to be_empty }
- end
+ it_behaves_like 'no existing package'
+ it_behaves_like 'conan_file_metadatum is not found'
context 'existing package' do
let(:expected_result) do
@@ -83,6 +117,26 @@ RSpec.describe ::Packages::Conan::PackagePresenter do
it { is_expected.to eq(expected_result) }
+ context 'with package_scope of project' do
+ # #package_file_url checks for params[:id]
+ let(:params) do
+ {
+ conan_package_reference: reference,
+ id: project.id
+ }
+ end
+
+ let(:expected_result) do
+ {
+ "conaninfo.txt" => "#{Settings.build_base_gitlab_url}/api/v4/projects/#{project.id}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/#{conan_package_reference}/0/conaninfo.txt",
+ "conanmanifest.txt" => "#{Settings.build_base_gitlab_url}/api/v4/projects/#{project.id}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/#{conan_package_reference}/0/conanmanifest.txt",
+ "conan_package.tgz" => "#{Settings.build_base_gitlab_url}/api/v4/projects/#{project.id}/packages/conan/v1/files/#{package.conan_recipe_path}/0/package/#{conan_package_reference}/0/conan_package.tgz"
+ }
+ end
+
+ it { is_expected.to eq(expected_result) }
+ end
+
context 'multiple packages with different references' do
let(:info_file) { create(:conan_package_file, :conan_package_info, package: package) }
let(:manifest_file) { create(:conan_package_file, :conan_package_manifest, package: package) }
@@ -132,11 +186,8 @@ RSpec.describe ::Packages::Conan::PackagePresenter do
).package_snapshot
end
- context 'no existing package' do
- let(:package) { nil }
-
- it { is_expected.to be_empty }
- end
+ it_behaves_like 'no existing package'
+ it_behaves_like 'conan_file_metadatum is not found'
context 'existing package' do
let(:expected_result) do