diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-12 15:10:49 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-12 15:10:49 +0300 |
commit | bbfd13e575237aaa69a49caf1e23ebd878c2f824 (patch) | |
tree | ecf9f7db38629b98b804dfdfc23ab7234bdd642d /spec/models | |
parent | 9c07ab8c6975de1046bd65b36f3d34f5408dac13 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/namespace/package_setting_spec.rb | 45 | ||||
-rw-r--r-- | spec/models/packages/package_spec.rb | 10 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 102 | ||||
-rw-r--r-- | spec/models/release_highlight_spec.rb | 2 |
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) |