Duplicate CI config node factory on class level
This commit is contained in:
parent
cc373a3550
commit
7c8f3b0cfc
|
@ -37,7 +37,9 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
class_methods do
|
class_methods do
|
||||||
attr_reader :allowed_nodes
|
def allowed_nodes
|
||||||
|
Hash[@allowed_nodes.map { |key, factory| [key, factory.dup] } ]
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def compose!
|
def compose!
|
||||||
allowed_nodes.each do |key, factory|
|
allowed_nodes.each do |key, essence|
|
||||||
@nodes[key] = create_node(key, factory.dup)
|
@nodes[key] = create_node(key, essence)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ module Gitlab
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def create_node(key, factory)
|
def create_node(key, essence)
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Gitlab::Ci::Config::Node::Configurable do
|
||||||
|
let(:node) { Class.new }
|
||||||
|
|
||||||
|
before do
|
||||||
|
node.include(described_class)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'allowed nodes' do
|
||||||
|
before do
|
||||||
|
node.class_eval do
|
||||||
|
allow_node :object, Object, description: 'test object'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#allowed_nodes' do
|
||||||
|
it 'has valid allowed nodes' do
|
||||||
|
expect(node.allowed_nodes).to include :object
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a node factory' do
|
||||||
|
expect(node.allowed_nodes[:object])
|
||||||
|
.to be_an_instance_of Gitlab::Ci::Config::Node::Factory
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns a duplicated factory object' do
|
||||||
|
first_factory = node.allowed_nodes[:object]
|
||||||
|
second_factory = node.allowed_nodes[:object]
|
||||||
|
|
||||||
|
expect(first_factory).not_to be_equal(second_factory)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue