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/nuget/package_finder_spec.rb')
-rw-r--r--spec/finders/packages/nuget/package_finder_spec.rb66
1 files changed, 52 insertions, 14 deletions
diff --git a/spec/finders/packages/nuget/package_finder_spec.rb b/spec/finders/packages/nuget/package_finder_spec.rb
index 6a6eebca778..792e543e424 100644
--- a/spec/finders/packages/nuget/package_finder_spec.rb
+++ b/spec/finders/packages/nuget/package_finder_spec.rb
@@ -1,13 +1,13 @@
# frozen_string_literal: true
require 'spec_helper'
-RSpec.describe Packages::Nuget::PackageFinder do
+RSpec.describe Packages::Nuget::PackageFinder, feature_category: :package_registry do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:subgroup) { create(:group, parent: group) }
let_it_be(:project) { create(:project, namespace: subgroup) }
let_it_be_with_refind(:package1) { create(:nuget_package, project: project) }
- let_it_be(:package2) { create(:nuget_package, name: package1.name, version: '2.0.0-ABC', project: project) }
+ let_it_be(:package2) { create(:nuget_package, :with_metadatum, name: package1.name, version: '2.0.0+ABC', project: project) }
let_it_be(:package3) { create(:nuget_package, name: 'Another.Dummy.Package', project: project) }
let_it_be(:other_package_1) { create(:nuget_package, name: package1.name, version: package1.version) }
let_it_be(:other_package_2) { create(:nuget_package, name: package1.name, version: package2.version) }
@@ -15,9 +15,18 @@ RSpec.describe Packages::Nuget::PackageFinder do
let(:package_name) { package1.name }
let(:package_version) { nil }
let(:limit) { 50 }
+ let(:client_version) { nil }
describe '#execute!' do
- subject { described_class.new(user, target, package_name: package_name, package_version: package_version, limit: limit).execute }
+ subject { described_class.new(user, target, package_name: package_name, package_version: package_version, limit: limit, client_version: client_version).execute }
+
+ shared_examples 'calling with_nuget_version_or_normalized_version scope' do |with_normalized:|
+ it 'calls with_nuget_version_or_normalized_version scope with the correct arguments' do
+ expect(::Packages::Package).to receive(:with_nuget_version_or_normalized_version).with(package_version, with_normalized: with_normalized).and_call_original
+
+ subject
+ end
+ end
shared_examples 'handling all the conditions' do
it { is_expected.to match_array([package1, package2]) }
@@ -43,13 +52,13 @@ RSpec.describe Packages::Nuget::PackageFinder do
end
context 'with valid version' do
- let(:package_version) { '2.0.0-ABC' }
+ let(:package_version) { '2.0.0+ABC' }
it { is_expected.to match_array([package2]) }
end
context 'with varying case version' do
- let(:package_version) { '2.0.0-abC' }
+ let(:package_version) { '2.0.0+abC' }
it { is_expected.to match_array([package2]) }
end
@@ -60,6 +69,16 @@ RSpec.describe Packages::Nuget::PackageFinder do
it { is_expected.to be_empty }
end
+ context 'with normalized version' do
+ let(:package_version) { '2.0.0' }
+
+ before do
+ package2.nuget_metadatum.update_column(:normalized_version, package_version)
+ end
+
+ it { is_expected.to match_array([package2]) }
+ end
+
context 'with limit hit' do
let_it_be(:package4) { create(:nuget_package, name: package1.name, project: project) }
let_it_be(:package5) { create(:nuget_package, name: package1.name, project: project) }
@@ -76,22 +95,34 @@ RSpec.describe Packages::Nuget::PackageFinder do
it { is_expected.to match_array([package1, package2]) }
end
- context 'with prefix wildcard' do
- let(:package_name) { "%#{package1.name[3..]}" }
+ context 'with client version less than 3' do
+ let(:package_version) { '2.0.0+abc' }
+ let(:client_version) { '2.8.6' }
- it { is_expected.to match_array([package1, package2]) }
+ it_behaves_like 'calling with_nuget_version_or_normalized_version scope', with_normalized: false
end
- context 'with suffix wildcard' do
- let(:package_name) { "#{package1.name[0..-3]}%" }
+ context 'with client version greater than or equal to 3' do
+ let(:package_version) { '2.0.0+abc' }
+ let(:client_version) { '3.5' }
- it { is_expected.to match_array([package1, package2]) }
+ it_behaves_like 'calling with_nuget_version_or_normalized_version scope', with_normalized: true
end
- context 'with surrounding wildcards' do
- let(:package_name) { "%#{package1.name[3..-3]}%" }
+ context 'with no client version' do
+ let(:package_version) { '2.0.0+abc' }
- it { is_expected.to match_array([package1, package2]) }
+ it_behaves_like 'calling with_nuget_version_or_normalized_version scope', with_normalized: true
+ end
+
+ context 'when nuget_normalized_version feature flag is disabled' do
+ let(:package_version) { '2.0.0+abc' }
+
+ before do
+ stub_feature_flags(nuget_normalized_version: false)
+ end
+
+ it_behaves_like 'calling with_nuget_version_or_normalized_version scope', with_normalized: false
end
end
@@ -130,5 +161,12 @@ RSpec.describe Packages::Nuget::PackageFinder do
it { is_expected.to be_empty }
end
+
+ context 'when package name is blank' do
+ let(:target) { project }
+ let(:package_name) { nil }
+
+ it { is_expected.to be_empty }
+ end
end
end