summaryrefslogtreecommitdiff
path: root/spec/presenters/packages/detail/package_presenter_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/presenters/packages/detail/package_presenter_spec.rb')
-rw-r--r--spec/presenters/packages/detail/package_presenter_spec.rb45
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