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/models/packages/nuget/metadatum_spec.rb')
-rw-r--r--spec/models/packages/nuget/metadatum_spec.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/spec/models/packages/nuget/metadatum_spec.rb b/spec/models/packages/nuget/metadatum_spec.rb
index 4b02353d6e8..e1520c0782f 100644
--- a/spec/models/packages/nuget/metadatum_spec.rb
+++ b/spec/models/packages/nuget/metadatum_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe Packages::Nuget::Metadatum, type: :model, feature_category: :package_registry do
+ it { is_expected.to be_a Packages::Nuget::VersionNormalizable }
+
describe 'relationships' do
it { is_expected.to belong_to(:package).inverse_of(:nuget_metadatum) }
end
@@ -15,6 +17,18 @@ RSpec.describe Packages::Nuget::Metadatum, type: :model, feature_category: :pack
it { is_expected.to validate_presence_of(:description) }
it { is_expected.to validate_length_of(:description).is_at_most(described_class::MAX_DESCRIPTION_LENGTH) }
+ context 'for normalized_version presence' do
+ it { is_expected.to validate_presence_of(:normalized_version) }
+
+ context 'when nuget_normalized_version feature flag is disabled' do
+ before do
+ stub_feature_flags(nuget_normalized_version: false)
+ end
+
+ it { is_expected.not_to validate_presence_of(:normalized_version) }
+ end
+ end
+
%i[license_url project_url icon_url].each do |url|
describe "##{url}" do
it { is_expected.to allow_value('http://sandbox.com').for(url) }
@@ -36,4 +50,54 @@ RSpec.describe Packages::Nuget::Metadatum, type: :model, feature_category: :pack
end
end
end
+
+ it { is_expected.to delegate_method(:version).to(:package).with_prefix }
+
+ describe '.normalized_version_in' do
+ let_it_be(:nuget_metadatums) { create_list(:nuget_metadatum, 2) }
+
+ subject { described_class.normalized_version_in(nuget_metadatums.first.normalized_version) }
+
+ it { is_expected.to contain_exactly(nuget_metadatums.first) }
+ end
+
+ describe 'callbacks' do
+ describe '#set_normalized_version' do
+ using RSpec::Parameterized::TableSyntax
+
+ let_it_be_with_reload(:nuget_metadatum) { create(:nuget_metadatum) }
+
+ where(:version, :normalized_version) do
+ '1.0' | '1.0.0'
+ '1.0.0.0' | '1.0.0'
+ '0.1' | '0.1.0'
+ '1.0.7+r3456' | '1.0.7'
+ '8.0.0.00+RC.54' | '8.0.0'
+ '1.0.0-Alpha' | '1.0.0-alpha'
+ '1.0.00-RC-02' | '1.0.0-rc-02'
+ '8.0.000-preview.0.546.0' | '8.0.0-preview.0.546.0'
+ '0.1.0-dev.37+0999370' | '0.1.0-dev.37'
+ '1.2.3' | '1.2.3'
+ end
+
+ with_them do
+ it 'saves the normalized version' do
+ nuget_metadatum.package.update_column(:version, version)
+ nuget_metadatum.save!
+
+ expect(nuget_metadatum.normalized_version).to eq(normalized_version)
+ end
+
+ context 'when the nuget_normalized_version feature flag is disabled' do
+ before do
+ stub_feature_flags(nuget_normalized_version: false)
+ end
+
+ it 'does not save the normalized version' do
+ expect(nuget_metadatum.normalized_version).not_to eq(normalized_version)
+ end
+ end
+ end
+ end
+ end
end