class ForemanMaintain::Scenario

Attributes

steps[R]

Public Class Methods

inspect() click to toggle source
# File lib/foreman_maintain/scenario.rb, line 147
def self.inspect
  "Scenario Class #{metadata[:description]}<#{name}>"
end
new() click to toggle source
# File lib/foreman_maintain/scenario.rb, line 82
def initialize
  @steps = []
  compose
end
new_from_hash(hash) click to toggle source
# File lib/foreman_maintain/scenario.rb, line 160
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 143
def add_step(step)
  add_steps([step])
end
add_steps(steps) click to toggle source
# File lib/foreman_maintain/scenario.rb, line 137
def add_steps(steps)
  steps.each do |step|
    self.steps << step.ensure_instance
  end
end
before_scenarios() click to toggle source

scenarios to be run before this scenario

# File lib/foreman_maintain/scenario.rb, line 130
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 88
def compose; end
executed_steps() click to toggle source
# File lib/foreman_maintain/scenario.rb, line 98
def executed_steps
  steps.find_all(&:executed?)
end
failed?() click to toggle source
# File lib/foreman_maintain/scenario.rb, line 125
def failed?
  !passed?
end
filter_whitelisted(steps, options) click to toggle source
# File lib/foreman_maintain/scenario.rb, line 110
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
inspect() click to toggle source
# File lib/foreman_maintain/scenario.rb, line 151
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 170
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 121
def passed?
  (steps_with_error(:whitelisted => false) + steps_with_warning(:whitelisted => false)).empty?
end
preparation_steps() click to toggle source
Calls superclass method
# File lib/foreman_maintain/scenario.rb, line 90
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
steps_with_error(options = {}) click to toggle source
# File lib/foreman_maintain/scenario.rb, line 102
def steps_with_error(options = {})
  filter_whitelisted(executed_steps.find_all(&:fail?), options)
end
steps_with_warning(options = {}) click to toggle source
# File lib/foreman_maintain/scenario.rb, line 106
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 155
def to_hash
  { :label => label,
    :steps => steps.map(&:to_hash) }
end