# File lib/foreman_maintain/scenario.rb, line 147 def self.inspect "Scenario Class #{metadata[:description]}<#{name}>" end
# File lib/foreman_maintain/scenario.rb, line 82 def initialize @steps = [] compose end
# 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
# File lib/foreman_maintain/scenario.rb, line 143 def add_step(step) add_steps([step]) end
# File lib/foreman_maintain/scenario.rb, line 137 def add_steps(steps) steps.each do |step| self.steps << step.ensure_instance end end
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
Override to compose steps for the scenario
# File lib/foreman_maintain/scenario.rb, line 88 def compose; end
# File lib/foreman_maintain/scenario.rb, line 98 def executed_steps steps.find_all(&:executed?) end
# File lib/foreman_maintain/scenario.rb, line 125 def failed? !passed? end
# 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
# File lib/foreman_maintain/scenario.rb, line 151 def inspect "#{self.class.metadata[:description]}<#{self.class.name}>" end
# 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
# File lib/foreman_maintain/scenario.rb, line 121 def passed? (steps_with_error(:whitelisted => false) + steps_with_warning(:whitelisted => false)).empty? end
# 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
# File lib/foreman_maintain/scenario.rb, line 102 def steps_with_error(options = {}) filter_whitelisted(executed_steps.find_all(&:fail?), options) end
# File lib/foreman_maintain/scenario.rb, line 106 def steps_with_warning(options = {}) filter_whitelisted(executed_steps.find_all(&:warning?), options) end
# File lib/foreman_maintain/scenario.rb, line 155 def to_hash { :label => label, :steps => steps.map(&:to_hash) } end