module Directive::SpecHelper::DSL
Public Class Methods
included(base)
click to toggle source
Calls superclass method
# File lib/directive/spec_helper/dsl.rb, line 27 def self.included(base) base.extend DSL super end
Public Instance Methods
nested_config_option(config_name, &block)
click to toggle source
# File lib/directive/spec_helper/dsl.rb, line 8 def nested_config_option(config_name, &block) in_nested_config_stack(config_name) do |nested_stack| describe(config_name.to_s, caller: caller) do subject { nested_config } let(:parent_config) { parent_config_for_nested(nested_stack) } let(:nested_config) { parent_config.public_send(nested_stack.last) } it "defines nested config object #{config_name}" do expect(parent_config).to respond_to config_name expect(parent_config._nested_options).to include config_name.to_sym expect(parent_config.public_send(config_name)).to be_a Directive::ConfigObject end instance_eval(&block) end end end
Private Instance Methods
_nested_config_stack()
click to toggle source
# File lib/directive/spec_helper/dsl.rb, line 55 def _nested_config_stack Thread.current[:nested_config_stack] ||= [] end
in_nested_config_stack(name) { |dup| ... }
click to toggle source
# File lib/directive/spec_helper/dsl.rb, line 47 def in_nested_config_stack(name) _nested_config_stack << name.to_sym yield _nested_config_stack.dup _nested_config_stack.pop end
parent_config_for_nested(nested_stack)
click to toggle source
# File lib/directive/spec_helper/dsl.rb, line 34 def parent_config_for_nested(nested_stack) @parent_config ||= {} @parent_config[nested_stack] ||= described_class. __send__(:_config_builder). __send__(:configuration). yield_self do |config| nested_stack[0..-2].inject(config) do |conf, nested_name| conf.public_send(nested_name) end end end