diff options
Diffstat (limited to 'spec/presenters/packages/detail/package_presenter_spec.rb')
-rw-r--r-- | spec/presenters/packages/detail/package_presenter_spec.rb | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/spec/presenters/packages/detail/package_presenter_spec.rb b/spec/presenters/packages/detail/package_presenter_spec.rb index 34582957364..3a13aca6c7a 100644 --- a/spec/presenters/packages/detail/package_presenter_spec.rb +++ b/spec/presenters/packages/detail/package_presenter_spec.rb @@ -9,15 +9,18 @@ RSpec.describe ::Packages::Detail::PackagePresenter do let(:presenter) { described_class.new(package) } let_it_be(:user_info) { { name: user.name, avatar_url: user.avatar_url } } + let!(:expected_package_files) do - npm_file = package.package_files.first - [{ - created_at: npm_file.created_at, - download_path: npm_file.download_path, - file_name: npm_file.file_name, - size: npm_file.size - }] + package.package_files.map do |file| + { + created_at: file.created_at, + download_path: file.download_path, + file_name: file.file_name, + size: file.size + } + end end + let(:pipeline_info) do pipeline = package.build_info.pipeline { @@ -29,11 +32,15 @@ RSpec.describe ::Packages::Detail::PackagePresenter do user: user_info, project: { name: pipeline.project.name, - web_url: pipeline.project.web_url + web_url: pipeline.project.web_url, + pipeline_url: include("pipelines/#{pipeline.id}"), + commit_url: include("commit/#{pipeline.sha}") } } end + let!(:dependency_links) { [] } + let!(:expected_package_details) do { id: package.id, @@ -55,7 +62,7 @@ RSpec.describe ::Packages::Detail::PackagePresenter do let(:expected_package_details) { super().merge(pipeline: pipeline_info) } it 'returns details with pipeline' do - expect(presenter.detail_view).to eq expected_package_details + expect(presenter.detail_view).to match expected_package_details end end @@ -67,6 +74,24 @@ RSpec.describe ::Packages::Detail::PackagePresenter do end end + context 'with conan metadata' do + let(:package) { create(:conan_package, project: project) } + let(:expected_package_details) { super().merge(conan_metadatum: package.conan_metadatum) } + + it 'returns conan_metadatum' do + expect(presenter.detail_view).to eq expected_package_details + end + end + + context 'with composer metadata' do + let(:package) { create(:composer_package, :with_metadatum, sha: '123', project: project) } + let(:expected_package_details) { super().merge(composer_metadatum: package.composer_metadatum) } + + it 'returns composer_metadatum' do + expect(presenter.detail_view).to eq expected_package_details + end + end + context 'with nuget_metadatum' do let_it_be(:package) { create(:nuget_package, project: project) } let_it_be(:nuget_metadatum) { create(:nuget_metadatum, package: package) } @@ -81,6 +106,7 @@ RSpec.describe ::Packages::Detail::PackagePresenter do let_it_be(:package) { create(:nuget_package, project: project) } let_it_be(:dependency_link) { create(:packages_dependency_link, package: package) } let_it_be(:nuget_dependency) { create(:nuget_dependency_link_metadatum, dependency_link: dependency_link) } + let_it_be(:expected_link) do { name: dependency_link.dependency.name, @@ -88,6 +114,7 @@ RSpec.describe ::Packages::Detail::PackagePresenter do target_framework: nuget_dependency.target_framework } end + let_it_be(:dependency_links) { [expected_link] } it 'returns the correct dependency link' do |