class ForemanMaintain::Scenario
Attributes
context[R]
steps[R]
Public Class Methods
inspect()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 186 def self.inspect "Scenario Class #{metadata[:description]}<#{name}>" end
new(context_data = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 83 def initialize(context_data = {}) @steps = [] @context = Context.new(context_data) set_context_mapping compose end
new_from_hash(hash)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 199 def self.new_from_hash(hash) scenarios = find_all_scenarios(:label => hash[:label]) unless scenarios.size == 1 raise "Could not find scenario #{hash[:label]}, found #{scenarios.size} scenarios" end scenario = scenarios.first scenario.load_step_states(hash[:steps]) scenario end
Public Instance Methods
add_step(step)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 172 def add_step(step) add_steps(step) unless step.nil? end
add_step_with_context(definition, extra_params = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 176 def add_step_with_context(definition, extra_params = {}) if definition.present? add_step(definition.send(:new, context.params_for(definition).merge(extra_params))) end end
add_steps(*steps)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 166 def add_steps(*steps) steps.flatten.each do |step| self.steps << step.ensure_instance end end
add_steps_with_context(*definitions)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 182 def add_steps_with_context(*definitions) definitions.flatten.each { |definition| add_step_with_context(definition) } end
before_scenarios()
click to toggle source
scenarios to be run before this scenario
# File lib/foreman_maintain/scenario.rb, line 159 def before_scenarios scenarios = [] preparation_scenario = PreparationScenario.new(self) scenarios << [preparation_scenario] unless preparation_scenario.steps.empty? scenarios end
compose()
click to toggle source
Override to compose steps for the scenario
# File lib/foreman_maintain/scenario.rb, line 91 def compose end
executed_steps()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 106 def executed_steps steps.find_all(&:executed?) end
failed?()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 154 def failed? !passed? end
filter_whitelisted(steps, options)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 130 def filter_whitelisted(steps, options) options.validate_options!(:whitelisted) if options.key?(:whitelisted) steps.select do |step| options[:whitelisted] ? step.whitelisted? : !step.whitelisted? end else steps end end
info_warning?()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 150 def info_warning? !steps_with_info_warning(:whitelisted => false).empty? end
inspect()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 190 def inspect "#{self.class.metadata[:description]}<#{self.class.name}>" end
load_step_states(steps_hash)
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 209 def load_step_states(steps_hash) steps = self.steps.dup steps_hash.each do |step_hash| until steps.empty? step = steps.shift if step.matches_hash?(step_hash) step.update_from_hash(step_hash) break end end end end
passed?()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 141 def passed? (steps_with_abort(:whitelisted => false) + steps_with_error(:whitelisted => false)).empty? end
preparation_steps()
click to toggle source
Calls superclass method
# File lib/foreman_maintain/scenario.rb, line 98 def preparation_steps # we first take the preparation steps defined for the scenario + collect # preparation steps for the steps inside the scenario steps.inject(super.dup) do |results, step| results.concat(step.preparation_steps) end.uniq end
set_context_mapping()
click to toggle source
Override to map context for the scenario
# File lib/foreman_maintain/scenario.rb, line 95 def set_context_mapping end
steps_with_abort(options = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 114 def steps_with_abort(options = {}) filter_whitelisted(executed_steps.find_all(&:aborted?), options) end
steps_with_error(options = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 110 def steps_with_error(options = {}) filter_whitelisted(executed_steps.find_all(&:fail?), options) end
steps_with_info_warning(options = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 122 def steps_with_info_warning(options = {}) filter_whitelisted(executed_steps.find_all(&:info_warning?), options) end
steps_with_skipped(options = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 126 def steps_with_skipped(options = {}) filter_whitelisted(executed_steps.find_all(&:skipped?), options) end
steps_with_warning(options = {})
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 118 def steps_with_warning(options = {}) filter_whitelisted(executed_steps.find_all(&:warning?), options) end
to_hash()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 194 def to_hash { :label => label, :steps => steps.map(&:to_hash) } end
warning?()
click to toggle source
# File lib/foreman_maintain/scenario.rb, line 146 def warning? !steps_with_warning(:whitelisted => false).empty? end