diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-08 15:06:01 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-08 15:06:01 +0300 |
commit | 9865665cb15a1f63e6c4d0623d33b8ef11810f8d (patch) | |
tree | 25458d0f21cf25896af750ed6933bbc4efcdb909 /spec/models/namespace_spec.rb | |
parent | 77a7772c3bdb03d92cbc154f6b1a762953cc7c19 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/namespace_spec.rb')
-rw-r--r-- | spec/models/namespace_spec.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb index 60f0dd49ff3..93ad6008aec 100644 --- a/spec/models/namespace_spec.rb +++ b/spec/models/namespace_spec.rb @@ -954,4 +954,52 @@ describe Namespace do expect(group.has_parent?).to be_falsy end end + + describe '#closest_setting' do + using RSpec::Parameterized::TableSyntax + + shared_examples_for 'fetching closest setting' do + let!(:root_namespace) { create(:namespace) } + let!(:namespace) { create(:namespace, parent: root_namespace) } + + let(:setting) { namespace.closest_setting(setting_name) } + + before do + root_namespace.update_attribute(setting_name, root_setting) + namespace.update_attribute(setting_name, child_setting) + end + + it 'returns closest non-nil value' do + expect(setting).to eq(result) + end + end + + context 'when setting is of non-boolean type' do + where(:root_setting, :child_setting, :result) do + 100 | 200 | 200 + 100 | nil | 100 + nil | nil | nil + end + + with_them do + let(:setting_name) { :max_artifacts_size } + + it_behaves_like 'fetching closest setting' + end + end + + context 'when setting is of boolean type' do + where(:root_setting, :child_setting, :result) do + true | false | false + true | nil | true + nil | nil | nil + end + + with_them do + let(:setting_name) { :lfs_enabled } + + it_behaves_like 'fetching closest setting' + end + end + end end |