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:
Diffstat (limited to 'spec/finders/packages/npm/package_finder_spec.rb')
-rw-r--r--spec/finders/packages/npm/package_finder_spec.rb61
1 files changed, 55 insertions, 6 deletions
diff --git a/spec/finders/packages/npm/package_finder_spec.rb b/spec/finders/packages/npm/package_finder_spec.rb
index a995f3b96c4..230d267e508 100644
--- a/spec/finders/packages/npm/package_finder_spec.rb
+++ b/spec/finders/packages/npm/package_finder_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe ::Packages::Npm::PackageFinder do
let(:project) { package.project }
let(:package_name) { package.name }
+ let(:last_of_each_version) { true }
shared_examples 'accepting a namespace for' do |example_name|
before do
@@ -38,6 +39,8 @@ RSpec.describe ::Packages::Npm::PackageFinder do
end
describe '#execute' do
+ subject { finder.execute }
+
shared_examples 'finding packages by name' do
it { is_expected.to eq([package]) }
@@ -56,13 +59,27 @@ RSpec.describe ::Packages::Npm::PackageFinder do
end
end
- subject { finder.execute }
+ shared_examples 'handling last_of_each_version' do
+ include_context 'last_of_each_version setup context'
+
+ context 'disabled' do
+ let(:last_of_each_version) { false }
+
+ it { is_expected.to contain_exactly(package1, package2) }
+ end
+
+ context 'enabled' do
+ it { is_expected.to contain_exactly(package2) }
+ end
+ end
context 'with a project' do
- let(:finder) { described_class.new(package_name, project: project) }
+ let(:finder) { described_class.new(package_name, project: project, last_of_each_version: last_of_each_version) }
it_behaves_like 'finding packages by name'
+ it_behaves_like 'handling last_of_each_version'
+
context 'set to nil' do
let(:project) { nil }
@@ -71,10 +88,12 @@ RSpec.describe ::Packages::Npm::PackageFinder do
end
context 'with a namespace' do
- let(:finder) { described_class.new(package_name, namespace: namespace) }
+ let(:finder) { described_class.new(package_name, namespace: namespace, last_of_each_version: last_of_each_version) }
it_behaves_like 'accepting a namespace for', 'finding packages by name'
+ it_behaves_like 'accepting a namespace for', 'handling last_of_each_version'
+
context 'set to nil' do
let_it_be(:namespace) { nil }
@@ -98,16 +117,28 @@ RSpec.describe ::Packages::Npm::PackageFinder do
end
end
+ shared_examples 'handling last_of_each_version' do
+ include_context 'last_of_each_version setup context'
+
+ context 'enabled' do
+ it { is_expected.to eq(package2) }
+ end
+ end
+
context 'with a project' do
- let(:finder) { described_class.new(package_name, project: project) }
+ let(:finder) { described_class.new(package_name, project: project, last_of_each_version: last_of_each_version) }
it_behaves_like 'finding packages by version'
+
+ it_behaves_like 'handling last_of_each_version'
end
context 'with a namespace' do
- let(:finder) { described_class.new(package_name, namespace: namespace) }
+ let(:finder) { described_class.new(package_name, namespace: namespace, last_of_each_version: last_of_each_version) }
it_behaves_like 'accepting a namespace for', 'finding packages by version'
+
+ it_behaves_like 'accepting a namespace for', 'handling last_of_each_version'
end
end
@@ -118,10 +149,26 @@ RSpec.describe ::Packages::Npm::PackageFinder do
it { is_expected.to eq(package) }
end
+ shared_examples 'handling last_of_each_version' do
+ include_context 'last_of_each_version setup context'
+
+ context 'disabled' do
+ let(:last_of_each_version) { false }
+
+ it { is_expected.to eq(package2) }
+ end
+
+ context 'enabled' do
+ it { is_expected.to eq(package2) }
+ end
+ end
+
context 'with a project' do
- let(:finder) { described_class.new(package_name, project: project) }
+ let(:finder) { described_class.new(package_name, project: project, last_of_each_version: last_of_each_version) }
it_behaves_like 'finding package by last'
+
+ it_behaves_like 'handling last_of_each_version'
end
context 'with a namespace' do
@@ -129,6 +176,8 @@ RSpec.describe ::Packages::Npm::PackageFinder do
it_behaves_like 'accepting a namespace for', 'finding package by last'
+ it_behaves_like 'accepting a namespace for', 'handling last_of_each_version'
+
context 'with duplicate packages' do
let_it_be(:namespace) { create(:group) }
let_it_be(:subgroup1) { create(:group, parent: namespace) }