diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-16 00:09:35 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-16 00:09:35 +0300 |
commit | 7dc8bd3c16a6f8367fdee691711d3313e2efc3c6 (patch) | |
tree | 86108a4c223fd6f0d0c461446e243c413723d1f0 /spec/presenters/packages | |
parent | f784f7d3b19fe80834240bde23d1300accb01118 (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.rb | 91 |
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 |