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>2021-01-12 15:10:49 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-01-12 15:10:49 +0300
commitbbfd13e575237aaa69a49caf1e23ebd878c2f824 (patch)
treeecf9f7db38629b98b804dfdfc23ab7234bdd642d /spec/models
parent9c07ab8c6975de1046bd65b36f3d34f5408dac13 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/namespace/package_setting_spec.rb45
-rw-r--r--spec/models/packages/package_spec.rb10
-rw-r--r--spec/models/project_spec.rb102
-rw-r--r--spec/models/release_highlight_spec.rb2
4 files changed, 98 insertions, 61 deletions
diff --git a/spec/models/namespace/package_setting_spec.rb b/spec/models/namespace/package_setting_spec.rb
index d5653273951..097cef8ef3b 100644
--- a/spec/models/namespace/package_setting_spec.rb
+++ b/spec/models/namespace/package_setting_spec.rb
@@ -33,4 +33,49 @@ RSpec.describe Namespace::PackageSetting do
end
end
end
+
+ describe '#duplicates_allowed?' do
+ using RSpec::Parameterized::TableSyntax
+
+ subject { described_class.duplicates_allowed?(package) }
+
+ context 'package types with package_settings' do
+ # As more package types gain settings they will be added to this list
+ [:maven_package].each do |format|
+ let_it_be(:package) { create(format) } # rubocop:disable Rails/SaveBang
+ let_it_be(:package_type) { package.package_type }
+ let_it_be(:package_setting) { package.project.namespace.package_settings }
+
+ where(:duplicates_allowed, :duplicate_exception_regex, :result) do
+ true | '' | true
+ false | '' | false
+ false | '.*' | true
+ end
+
+ with_them do
+ context "for #{format}" do
+ before do
+ package_setting.update!(
+ "#{package_type}_duplicates_allowed" => duplicates_allowed,
+ "#{package_type}_duplicate_exception_regex" => duplicate_exception_regex
+ )
+ end
+
+ it { is_expected.to be(result) }
+ end
+ end
+ end
+ end
+
+ context 'package types without package_settings' do
+ [:npm_package, :conan_package, :nuget_package, :pypi_package, :composer_package, :generic_package, :golang_package, :debian_package].each do |format|
+ let_it_be(:package) { create(format) } # rubocop:disable Rails/SaveBang
+ let_it_be(:package_setting) { package.project.namespace.package_settings }
+
+ it 'raises an error' do
+ expect { subject }.to raise_error(Namespace::PackageSetting::PackageSettingNotImplemented)
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/packages/package_spec.rb b/spec/models/packages/package_spec.rb
index 56ff13762f9..6645db33503 100644
--- a/spec/models/packages/package_spec.rb
+++ b/spec/models/packages/package_spec.rb
@@ -745,4 +745,14 @@ RSpec.describe Packages::Package, type: :model do
end
end
end
+
+ describe '#package_settings' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
+ let_it_be(:package) { create(:maven_package, project: project) }
+
+ it 'returns the namespace package_settings' do
+ expect(package.package_settings).to eq(group.package_settings)
+ end
+ end
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 7c3eed14bcf..b6875e3de6e 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -1067,36 +1067,6 @@ RSpec.describe Project, factory_default: :keep do
end
end
- describe '#cache_has_external_wiki' do
- let_it_be(:project) { create(:project, has_external_wiki: nil) }
-
- it 'stores true if there is any external_wikis' do
- services = double(:service, external_wikis: [ExternalWikiService.new])
- expect(project).to receive(:services).and_return(services)
-
- expect do
- project.cache_has_external_wiki
- end.to change { project.has_external_wiki}.to(true)
- end
-
- it 'stores false if there is no external_wikis' do
- services = double(:service, external_wikis: [])
- expect(project).to receive(:services).and_return(services)
-
- expect do
- project.cache_has_external_wiki
- end.to change { project.has_external_wiki}.to(false)
- end
-
- it 'does not cache data when in a read-only GitLab instance' do
- allow(Gitlab::Database).to receive(:read_only?) { true }
-
- expect do
- project.cache_has_external_wiki
- end.not_to change { project.has_external_wiki }
- end
- end
-
describe '#has_wiki?' do
let(:no_wiki_project) { create(:project, :wiki_disabled, has_external_wiki: false) }
let(:wiki_enabled_project) { create(:project) }
@@ -1136,52 +1106,64 @@ RSpec.describe Project, factory_default: :keep do
describe '#external_wiki' do
let_it_be(:project) { create(:project) }
- context 'with an active external wiki' do
- before do
- create(:service, project: project, type: 'ExternalWikiService', active: true)
- project.external_wiki
- end
+ def subject
+ project.reload.external_wiki
+ end
- it 'sets :has_external_wiki as true' do
- expect(project.has_external_wiki).to be(true)
- end
+ it 'returns an active external wiki' do
+ create(:service, project: project, type: 'ExternalWikiService', active: true)
- it 'sets :has_external_wiki as false if an external wiki service is destroyed later' do
- expect(project.has_external_wiki).to be(true)
+ is_expected.to be_kind_of(ExternalWikiService)
+ end
- project.services.external_wikis.first.destroy
+ it 'does not return an inactive external wiki' do
+ create(:service, project: project, type: 'ExternalWikiService', active: false)
- expect(project.has_external_wiki).to be(false)
- end
+ is_expected.to eq(nil)
end
- context 'with an inactive external wiki' do
- before do
- create(:service, project: project, type: 'ExternalWikiService', active: false)
- end
+ it 'sets Project#has_external_wiki when it is nil' do
+ create(:service, project: project, type: 'ExternalWikiService', active: true)
+ project.update_column(:has_external_wiki, nil)
- it 'sets :has_external_wiki as false' do
- expect(project.has_external_wiki).to be(false)
- end
+ expect { subject }.to change { project.has_external_wiki }.from(nil).to(true)
end
+ end
- context 'with no external wiki' do
- before do
- project.external_wiki
- end
+ describe '#has_external_wiki' do
+ let_it_be(:project) { create(:project) }
- it 'sets :has_external_wiki as false' do
- expect(project.has_external_wiki).to be(false)
- end
+ def subject
+ project.reload.has_external_wiki
+ end
- it 'sets :has_external_wiki as true if an external wiki service is created later' do
- expect(project.has_external_wiki).to be(false)
+ specify { is_expected.to eq(false) }
+ context 'when there is an active external wiki service' do
+ let!(:service) do
create(:service, project: project, type: 'ExternalWikiService', active: true)
+ end
+
+ specify { is_expected.to eq(true) }
+
+ it 'becomes false if the external wiki service is destroyed' do
+ expect do
+ Service.find(service.id).delete
+ end.to change { subject }.to(false)
+ end
- expect(project.has_external_wiki).to be(true)
+ it 'becomes false if the external wiki service becomes inactive' do
+ expect do
+ service.update_column(:active, false)
+ end.to change { subject }.to(false)
end
end
+
+ it 'is false when external wiki service is not active' do
+ create(:service, project: project, type: 'ExternalWikiService', active: false)
+
+ is_expected.to eq(false)
+ end
end
describe '#star_count' do
diff --git a/spec/models/release_highlight_spec.rb b/spec/models/release_highlight_spec.rb
index ac252e6d6cf..749b9b8e1ab 100644
--- a/spec/models/release_highlight_spec.rb
+++ b/spec/models/release_highlight_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe ReleaseHighlight do
- let(:fixture_dir_glob) { Dir.glob(File.join('spec', 'fixtures', 'whats_new', '*.yml')) }
+ let(:fixture_dir_glob) { Dir.glob(File.join('spec', 'fixtures', 'whats_new', '*.yml')).grep(/\d*\_(\d*\_\d*)\.yml$/) }
before do
allow(Dir).to receive(:glob).with(Rails.root.join('data', 'whats_new', '*.yml')).and_return(fixture_dir_glob)