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>2021-09-20 16:18:24 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 16:18:24 +0300
commit0653e08efd039a5905f3fa4f6e9cef9f5d2f799c (patch)
tree4dcc884cf6d81db44adae4aa99f8ec1233a41f55 /spec/models/packages/package_file_spec.rb
parent744144d28e3e7fddc117924fef88de5d9674fe4c (diff)
Add latest changes from gitlab-org/gitlab@14-3-stable-eev14.3.0-rc42
Diffstat (limited to 'spec/models/packages/package_file_spec.rb')
-rw-r--r--spec/models/packages/package_file_spec.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/spec/models/packages/package_file_spec.rb b/spec/models/packages/package_file_spec.rb
index 90910fcb7ce..450656e3e9c 100644
--- a/spec/models/packages/package_file_spec.rb
+++ b/spec/models/packages/package_file_spec.rb
@@ -2,6 +2,8 @@
require 'spec_helper'
RSpec.describe Packages::PackageFile, type: :model do
+ using RSpec::Parameterized::TableSyntax
+
let_it_be(:project) { create(:project) }
let_it_be(:package_file1) { create(:package_file, :xml, file_name: 'FooBar') }
let_it_be(:package_file2) { create(:package_file, :xml, file_name: 'ThisIsATest') }
@@ -139,6 +141,71 @@ RSpec.describe Packages::PackageFile, type: :model do
end
end
+ describe '.most_recent!' do
+ it { expect(described_class.most_recent!).to eq(debian_package.package_files.last) }
+ end
+
+ describe '.most_recent_for' do
+ let_it_be(:package1) { create(:npm_package) }
+ let_it_be(:package2) { create(:npm_package) }
+ let_it_be(:package3) { create(:npm_package) }
+ let_it_be(:package4) { create(:npm_package) }
+
+ let_it_be(:package_file2_2) { create(:package_file, :npm, package: package2) }
+
+ let_it_be(:package_file3_2) { create(:package_file, :npm, package: package3) }
+ let_it_be(:package_file3_3) { create(:package_file, :npm, package: package3) }
+
+ let_it_be(:package_file4_2) { create(:package_file, :npm, package: package2) }
+ let_it_be(:package_file4_3) { create(:package_file, :npm, package: package2) }
+ let_it_be(:package_file4_4) { create(:package_file, :npm, package: package2) }
+
+ let(:most_recent_package_file1) { package1.package_files.recent.first }
+ let(:most_recent_package_file2) { package2.package_files.recent.first }
+ let(:most_recent_package_file3) { package3.package_files.recent.first }
+ let(:most_recent_package_file4) { package4.package_files.recent.first }
+
+ subject { described_class.most_recent_for(packages) }
+
+ where(
+ package_input1: [1, nil],
+ package_input2: [2, nil],
+ package_input3: [3, nil],
+ package_input4: [4, nil]
+ )
+
+ with_them do
+ let(:compact_inputs) { [package_input1, package_input2, package_input3, package_input4].compact }
+ let(:packages) do
+ ::Packages::Package.id_in(
+ compact_inputs.map { |pkg_number| public_send("package#{pkg_number}") }
+ .map(&:id)
+ )
+ end
+
+ let(:expected_package_files) { compact_inputs.map { |pkg_number| public_send("most_recent_package_file#{pkg_number}") } }
+
+ it { is_expected.to contain_exactly(*expected_package_files) }
+ end
+
+ context 'extra join and extra where' do
+ let_it_be(:helm_package) { create(:helm_package, without_package_files: true) }
+ let_it_be(:helm_package_file1) { create(:helm_package_file, channel: 'alpha') }
+ let_it_be(:helm_package_file2) { create(:helm_package_file, channel: 'alpha', package: helm_package) }
+ let_it_be(:helm_package_file3) { create(:helm_package_file, channel: 'beta', package: helm_package) }
+ let_it_be(:helm_package_file4) { create(:helm_package_file, channel: 'beta', package: helm_package) }
+
+ let(:extra_join) { :helm_file_metadatum }
+ let(:extra_where) { { packages_helm_file_metadata: { channel: 'alpha' } } }
+
+ subject { described_class.most_recent_for(Packages::Package.id_in(helm_package.id), extra_join: extra_join, extra_where: extra_where) }
+
+ it 'returns the most recent package for the selected channel' do
+ expect(subject).to contain_exactly(helm_package_file2)
+ end
+ end
+ end
+
describe '#update_file_store callback' do
let_it_be(:package_file) { build(:package_file, :nuget, size: nil) }