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>2023-07-19 17:16:28 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-07-19 17:16:28 +0300
commite4384360a16dd9a19d4d2d25d0ef1f2b862ed2a6 (patch)
tree2fcdfa7dcdb9db8f5208b2562f4b4e803d671243 /spec/finders/packages
parentffda4e7bcac36987f936b4ba515995a6698698f0 (diff)
Add latest changes from gitlab-org/gitlab@16-2-stable-eev16.2.0-rc42
Diffstat (limited to 'spec/finders/packages')
-rw-r--r--spec/finders/packages/ml_model/package_finder_spec.rb57
-rw-r--r--spec/finders/packages/npm/package_finder_spec.rb67
2 files changed, 62 insertions, 62 deletions
diff --git a/spec/finders/packages/ml_model/package_finder_spec.rb b/spec/finders/packages/ml_model/package_finder_spec.rb
new file mode 100644
index 00000000000..535360d13c5
--- /dev/null
+++ b/spec/finders/packages/ml_model/package_finder_spec.rb
@@ -0,0 +1,57 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe ::Packages::MlModel::PackageFinder, feature_category: :mlops do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:package) { create(:ml_model_package, project: project) }
+
+ let(:package_name) { package.name }
+ let(:package_version) { package.version }
+
+ describe '#execute!' do
+ subject(:find_package) { described_class.new(project).execute!(package_name, package_version) }
+
+ it 'finds package by name and version' do
+ expect(find_package).to eq(package)
+ end
+
+ it 'ignores packages with same name but different version' do
+ create(:ml_model_package, project: project, name: package.name, version: '3.1.4')
+
+ expect(find_package).to eq(package)
+ end
+
+ context 'when package name+version does not exist' do
+ let(:package_name) { 'a_package_that_does_not_exist' }
+
+ it 'raises ActiveRecord::RecordNotFound' do
+ expect { find_package }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+
+ context 'when package exists but is marked for destruction' do
+ let_it_be(:invalid_package) do
+ create(:ml_model_package, project: project, status: :pending_destruction)
+ end
+
+ let(:package_name) { invalid_package.name }
+ let(:package_version) { invalid_package.version }
+
+ it 'raises ActiveRecord::RecordNotFound' do
+ expect { find_package }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+
+ context 'when package name+version does not exist but it is not ml_model' do
+ let_it_be(:another_package) { create(:generic_package, project: project) }
+
+ let(:package_name) { another_package.name }
+ let(:package_version) { another_package.version }
+
+ it 'raises ActiveRecord::RecordNotFound' do
+ expect { find_package }.to raise_error(ActiveRecord::RecordNotFound)
+ end
+ end
+ end
+end
diff --git a/spec/finders/packages/npm/package_finder_spec.rb b/spec/finders/packages/npm/package_finder_spec.rb
index e11b33f71e9..45cc2a07027 100644
--- a/spec/finders/packages/npm/package_finder_spec.rb
+++ b/spec/finders/packages/npm/package_finder_spec.rb
@@ -7,7 +7,6 @@ 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
@@ -59,35 +58,11 @@ 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 '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
-
- context 'with npm_allow_packages_in_multiple_projects disabled' do
- before do
- stub_feature_flags(npm_allow_packages_in_multiple_projects: false)
- end
-
- it { is_expected.to contain_exactly(package2) }
- end
- end
-
context 'with a project' do
- let(:finder) { described_class.new(package_name, project: project, last_of_each_version: last_of_each_version) }
+ let(:finder) { described_class.new(package_name, project: project) }
it_behaves_like 'finding packages by name'
- it_behaves_like 'handling last_of_each_version'
-
context 'set to nil' do
let(:project) { nil }
@@ -96,12 +71,10 @@ RSpec.describe ::Packages::Npm::PackageFinder do
end
context 'with a namespace' do
- let(:finder) { described_class.new(package_name, namespace: namespace, last_of_each_version: last_of_each_version) }
+ let(:finder) { described_class.new(package_name, namespace: namespace) }
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 }
@@ -125,28 +98,16 @@ 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, last_of_each_version: last_of_each_version) }
+ let(:finder) { described_class.new(package_name, project: project) }
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, last_of_each_version: last_of_each_version) }
+ let(:finder) { described_class.new(package_name, namespace: namespace) }
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
@@ -157,26 +118,10 @@ 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, last_of_each_version: last_of_each_version) }
+ let(:finder) { described_class.new(package_name, project: project) }
it_behaves_like 'finding package by last'
-
- it_behaves_like 'handling last_of_each_version'
end
context 'with a namespace' do
@@ -184,8 +129,6 @@ 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) }