From d9d5042fd9edf2abd662566ddc4c65b6a9bdbb08 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon <grzesiek.bizon@gmail.com> Date: Thu, 9 Jun 2016 10:28:44 +0200 Subject: [PATCH] Extract method that composes new Ci config entry --- lib/gitlab/ci/config/node/entry.rb | 10 +++++-- spec/lib/gitlab/ci/config/node/global_spec.rb | 29 ++++++++++++++++--- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index c45744efdf5..bdef2af9ae1 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -20,14 +20,18 @@ module Gitlab def process! return if leaf? || invalid? - keys.each do |key, entry| - add_node(key, entry) - end + compose! nodes.each(&:process!) nodes.each(&:validate!) end + def compose! + keys.each do |key, entry| + add_node(key, entry) + end + end + def nodes @nodes.values end diff --git a/spec/lib/gitlab/ci/config/node/global_spec.rb b/spec/lib/gitlab/ci/config/node/global_spec.rb index ecfd60b2736..606750648d4 100644 --- a/spec/lib/gitlab/ci/config/node/global_spec.rb +++ b/spec/lib/gitlab/ci/config/node/global_spec.rb @@ -3,8 +3,6 @@ require 'spec_helper' describe Gitlab::Ci::Config::Node::Global do let(:global) { described_class.new(hash) } - before { global.process! } - describe '#keys' do it 'can contain global config keys' do expect(global.keys).to include :before_script @@ -20,7 +18,18 @@ describe Gitlab::Ci::Config::Node::Global do { before_script: ['ls', 'pwd'] } end + describe '#compose!' do + before { global.compose! } + + it 'instantiates entry nodes' do + expect(global.nodes.first) + .to be_an_instance_of Gitlab::Ci::Config::Node::Script + end + end + describe '#process!' do + before { global.process! } + it 'creates nodes hash' do expect(global.nodes).to be_an Array end @@ -48,13 +57,25 @@ describe Gitlab::Ci::Config::Node::Global do end describe '#before_script' do - it 'returns correct script' do - expect(global.before_script).to eq "ls\npwd" + context 'when processed' do + before { global.process! } + + it 'returns correct script' do + expect(global.before_script).to eq "ls\npwd" + end + end + + context 'when not processed' do + it 'returns nil' do + expect(global.before_script).to be nil + end end end end context 'when hash is not valid' do + before { global.process! } + let(:hash) do { before_script: 'ls' } end -- GitLab