Commit ecdcf04e authored by Grzegorz Bizon's avatar Grzegorz Bizon

Add undefined CI node strategies to handle defaults

parent de8b93bb
......@@ -13,38 +13,57 @@ module Gitlab
class Undefined < Entry
include Validatable
delegate :valid?, :errors, :value, to: :@strategy
validations do
validates :config, type: Class
end
def initialize(node)
super
unless node.default.nil?
@default = fabricate_default(node)
@strategy = create_strategy(node, node.default)
end
def defined?
false
end
def value
@default.value if @default
private
def create_strategy(node, default)
if default.nil?
Undefined::NullStrategy.new
else
entry = Node::Factory
.fabricate(node, default, attributes)
Undefined::DefaultStrategy.new(entry)
end
end
def valid?
@default ? @default.valid? : true
class DefaultStrategy
delegate :valid?, :errors, :value, to: :@default
def initialize(entry)
@default = entry
end
end
def errors
@default ? @default.errors : []
class NullStrategy
def initialize(*)
end
def defined?
false
def value
nil
end
private
def valid?
true
end
def fabricate_default(node)
Node::Factory.fabricate(node, node.default, attributes)
def errors
[]
end
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment