diff options
author | Rémy Coutable <remy@rymai.me> | 2018-10-17 18:08:20 +0000 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2018-10-17 18:08:20 +0000 |
commit | b6f2f738c73b1dfe66be61e1b37ca21fa698cf1c (patch) | |
tree | b6b520d12c2051a6a1cdaa5741f48f6583e0cce8 /qa/qa/factory/dependency.rb | |
parent | ab9cf561c230f1b6ec630215a9a9def53e14d764 (diff) | |
download | gitlab-ce-b6f2f738c73b1dfe66be61e1b37ca21fa698cf1c.tar.gz |
First iteration to allow creating QA resources using the API
Diffstat (limited to 'qa/qa/factory/dependency.rb')
-rw-r--r-- | qa/qa/factory/dependency.rb | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/qa/qa/factory/dependency.rb b/qa/qa/factory/dependency.rb index fc5dc82ce29..655e2677db0 100644 --- a/qa/qa/factory/dependency.rb +++ b/qa/qa/factory/dependency.rb @@ -1,37 +1,26 @@ module QA module Factory class Dependency - Signature = Struct.new(:factory, :block) + Signature = Struct.new(:name, :factory, :block) - def initialize(name, factory, signature) - @name = name - @factory = factory - @signature = signature + def initialize(caller_factory, dependency_signature) + @caller_factory = caller_factory + @dependency_signature = dependency_signature end def overridden? - !!@factory.public_send(@name) + !!@caller_factory.public_send(@dependency_signature.name) end - def build! + def build!(parents: []) return if overridden? - Builder.new(@signature, @factory).fabricate!.tap do |product| - @factory.public_send("#{@name}=", product) - end - end - - class Builder - def initialize(signature, caller_factory) - @factory = signature.factory - @block = signature.block - @caller_factory = caller_factory + dependency = @dependency_signature.factory.fabricate!(parents: parents) do |factory| + @dependency_signature.block&.call(factory, @caller_factory) end - def fabricate! - @factory.fabricate! do |factory| - @block&.call(factory, @caller_factory) - end + dependency.tap do |dependency| + @caller_factory.public_send("#{@dependency_signature.name}=", dependency) end end end |