Module: AppQuery::RSpec::Helpers::ClassMethods

Included in:
AppQuery::RSpec::Helpers
Defined in:
lib/app_query/rspec/helpers.rb

Instance Method Summary collapse

Instance Method Details

#cte_nameObject



67
68
69
# File 'lib/app_query/rspec/helpers.rb', line 67

def cte_name
  descriptions.find { _1[/cte\s/i] }&.then { _1.split.last }
end

#default_bindsObject



71
72
73
# File 'lib/app_query/rspec/helpers.rb', line 71

def default_binds
  metadatas.find { _1[:default_binds] }&.[](:default_binds) || []
end

#described_queryObject



43
44
45
# File 'lib/app_query/rspec/helpers.rb', line 43

def described_query
  AppQuery[query_name]
end

#descriptionsObject



59
60
61
# File 'lib/app_query/rspec/helpers.rb', line 59

def descriptions
  metadatas.map { _1[:description] }
end

#included(klass) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/app_query/rspec/helpers.rb', line 75

def included(klass)
  super
  # Inject classmethods into the group.
  klass.extend(ClassMethods)
  # If the describe block is aimed at string or resource/provider class
  # then set the default subject to be the Chef run.
  # if klass.described_class.nil? || klass.described_class.is_a?(Class) && (klass.described_class < Chef::Resource || klass.described_class < Chef::Provider)
  #  klass.subject { chef_run }
  # end
end

#metadatasObject



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/app_query/rspec/helpers.rb', line 47

def metadatas
  scope = is_a?(Class) ? self : self.class
  metahash = scope.
  result = []
  loop do
    result << metahash
    metahash = metahash[:parent_example_group]
    break unless metahash
  end
  result
end

#query_nameObject



63
64
65
# File 'lib/app_query/rspec/helpers.rb', line 63

def query_name
  descriptions.find { _1[/(app)?query\s/i] }&.then { _1.split.last }
end