summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-01-14 14:41:12 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-01-14 14:41:12 +0100
commit0ea8c236c15eea3bd08f7cdd0e6d0cc4e82faef5 (patch)
tree276740c86392a15528b50388e8cfc72a96c49230
parent67e90a123f4086b9110f081b204be2250459bbc7 (diff)
downloadgitlab-ce-0ea8c236c15eea3bd08f7cdd0e6d0cc4e82faef5.tar.gz
Add more specs for only/except policy config entry
-rw-r--r--lib/gitlab/ci/config/entry/policy.rb2
-rw-r--r--spec/lib/gitlab/ci/config/entry/policy_spec.rb52
2 files changed, 51 insertions, 3 deletions
diff --git a/lib/gitlab/ci/config/entry/policy.rb b/lib/gitlab/ci/config/entry/policy.rb
index fae6deede8b..bd571b8ea83 100644
--- a/lib/gitlab/ci/config/entry/policy.rb
+++ b/lib/gitlab/ci/config/entry/policy.rb
@@ -65,7 +65,7 @@ module Gitlab
end
def value
- self.class.default(key: @key).yield_self do |default|
+ self.class.default(key: @subject.key).yield_self do |default|
default.to_h.deep_merge(@subject.value.to_h)
end
end
diff --git a/spec/lib/gitlab/ci/config/entry/policy_spec.rb b/spec/lib/gitlab/ci/config/entry/policy_spec.rb
index 83001b7fdd8..d3e84298f1e 100644
--- a/spec/lib/gitlab/ci/config/entry/policy_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/policy_spec.rb
@@ -168,9 +168,57 @@ describe Gitlab::Ci::Config::Entry::Policy do
end
end
+ describe '#value' do
+ context 'when it is `only` policy' do
+ before do
+ entry.key = :only
+ end
+
+ context 'when user overrides default values' do
+ let(:config) { { refs: %w[feature], variables: %w[$VARIABLE] } }
+
+ it 'does not include default values' do
+ expect(entry.value).to eq config
+ end
+ end
+
+ context 'when user does not override default values' do
+ let(:config) { { variables: %w[$VARIABLE] } }
+
+ it 'includes default values' do
+ expect(entry.value).to eq(refs: %w[branches tags],
+ variables: %w[$VARIABLE])
+ end
+ end
+ end
+
+ context 'when it is `except` policy' do
+ before do
+ entry.key = :except
+ end
+
+ context 'when user does not override default values' do
+ let(:config) { { variables: %w[$VARIABLE] } }
+
+ it 'does not include default values' do
+ expect(entry.value).to eq config
+ end
+ end
+ end
+ end
+
describe '.default' do
- it 'does not have a default value' do
- expect(described_class.default).to be_nil
+ context 'when `only` policy is about to be fabricated' do
+ it 'has a default value' do
+ expect(described_class.default(key: :only))
+ .to eq(refs: %w[branches tags])
+ end
+ end
+
+ context 'when `except` policy is about to be fabricated' do
+ it 'does not have a default value' do
+ expect(described_class.default(key: :except)).to be_nil
+ end
end
end
end