diff options
Diffstat (limited to 'spec/models/packages/package_spec.rb')
-rw-r--r-- | spec/models/packages/package_spec.rb | 86 |
1 files changed, 60 insertions, 26 deletions
diff --git a/spec/models/packages/package_spec.rb b/spec/models/packages/package_spec.rb index 120b7d72cd9..381b5af117e 100644 --- a/spec/models/packages/package_spec.rb +++ b/spec/models/packages/package_spec.rb @@ -867,6 +867,24 @@ RSpec.describe Packages::Package, type: :model, feature_category: :package_regis end end + describe '.with_npm_scope' do + let_it_be(:package1) { create(:npm_package, name: '@test/foobar') } + let_it_be(:package2) { create(:npm_package, name: '@test2/foobar') } + let_it_be(:package3) { create(:npm_package, name: 'foobar') } + + subject { described_class.with_npm_scope('test') } + + it { is_expected.to contain_exactly(package1) } + + context 'when npm_package_registry_fix_group_path_validation is disabled' do + before do + stub_feature_flags(npm_package_registry_fix_group_path_validation: false) + end + + it { is_expected.to contain_exactly(package1) } + end + end + describe '.without_nuget_temporary_name' do let!(:package1) { create(:nuget_package) } let!(:package2) { create(:nuget_package, name: Packages::Nuget::TEMPORARY_PACKAGE_NAME) } @@ -958,6 +976,35 @@ RSpec.describe Packages::Package, type: :model, feature_category: :package_regis it { is_expected.to match_array([nuget_package]) } end + describe '.with_case_insensitive_name' do + let_it_be(:nuget_package) { create(:nuget_package, name: 'TestPackage') } + + subject { described_class.with_case_insensitive_name('testpackage') } + + it { is_expected.to match_array([nuget_package]) } + end + + describe '.with_nuget_version_or_normalized_version' do + let_it_be(:nuget_package) { create(:nuget_package, :with_metadatum, version: '1.0.7+r3456') } + + before do + nuget_package.nuget_metadatum.update_column(:normalized_version, '1.0.7') + end + + subject { described_class.with_nuget_version_or_normalized_version(version, with_normalized: with_normalized) } + + where(:version, :with_normalized, :expected) do + '1.0.7' | true | [ref(:nuget_package)] + '1.0.7' | false | [] + '1.0.7+r3456' | true | [ref(:nuget_package)] + '1.0.7+r3456' | false | [ref(:nuget_package)] + end + + with_them do + it { is_expected.to match_array(expected) } + end + end + context 'status scopes' do let_it_be(:default_package) { create(:maven_package, :default) } let_it_be(:hidden_package) { create(:maven_package, :hidden) } @@ -1014,32 +1061,6 @@ RSpec.describe Packages::Package, type: :model, feature_category: :package_regis end end - describe '.select_only_first_by_name' do - let_it_be(:project) { create(:project) } - let_it_be(:package1) { create(:package, name: 'p1', created_at: 1000, project: project) } - let_it_be(:package2) { create(:package, name: 'p1', created_at: 1001, project: project) } - let_it_be(:package3) { create(:package, name: 'p2', project: project) } - - subject { described_class.order_name_desc_version_desc.select_only_first_by_name } - - it 'returns only the most recent package by name' do - is_expected.to eq([package3, package2]) - end - end - - describe '.order_name_desc_version_desc' do - let_it_be(:project) { create(:project) } - let_it_be(:package1) { create(:package, name: 'p1', created_at: 1000, project: project) } - let_it_be(:package2) { create(:package, name: 'p1', created_at: 1001, project: project) } - let_it_be(:package3) { create(:package, name: 'p2', project: project) } - - subject { described_class.order_name_desc_version_desc } - - it 'sorts packages by name desc and created desc' do - is_expected.to eq([package3, package2, package1]) - end - end - context 'sorting' do let_it_be(:project) { create(:project, name: 'aaa') } let_it_be(:project2) { create(:project, name: 'bbb') } @@ -1440,6 +1461,19 @@ RSpec.describe Packages::Package, type: :model, feature_category: :package_regis end end + describe '#normalized_nuget_version' do + let_it_be(:package) { create(:nuget_package, :with_metadatum, version: '1.0') } + let(:normalized_version) { '1.0.0' } + + subject { package.normalized_nuget_version } + + before do + package.nuget_metadatum.update_column(:normalized_version, normalized_version) + end + + it { is_expected.to eq(normalized_version) } + end + describe "#publish_creation_event" do let_it_be(:project) { create(:project) } |