lib/lopata/scenario.rb in lopata-0.1.28 vs lib/lopata/scenario.rb in lopata-0.1.29
- old
+ new
@@ -61,16 +61,16 @@
end
# @private
# Scenario execution and live-cycle information
class Execution
- attr_reader :scenario, :current_step, :top
+ attr_reader :scenario, :current_step, :top, :title, :base_metadata
def initialize(title, metadata = {})
- @scenario = Lopata::Scenario.new(self)
- @top = Lopata::GroupExecution.new(Lopata::TopStep.new(title, metadata: metadata), nil, steps: [])
- @current_step = @top
+ @title = title
+ @base_metadata = metadata
+ setup
end
# Provide a human-readable representation of this class
def inspect
"#<#{self.class.name} #{title.inspect}>"
@@ -80,16 +80,23 @@
def steps
top.steps
end
def run
+ setup unless @scenario # for second run if need
world.notify_observers(:scenario_started, self)
run_step(top)
world.notify_observers(:scenario_finished, self)
cleanup
end
+ def setup
+ @scenario = Lopata::Scenario.new(self)
+ @top = Lopata::GroupExecution.new(Lopata::TopStep.new(title, metadata: base_metadata), nil, steps: [])
+ @current_step = @top
+ end
+
def run_step(step)
@current_step = step
return :skipped if step.skipped?
return :ignored if step.ignored?
if step.condition&.dynamic && !step.condition.match_dynamic?(scenario)
@@ -133,14 +140,10 @@
def find_let_method(name)
current_step.find_let_method(name)
end
- def title
- top.title
- end
-
def status
top.status
end
def let_base
@@ -158,10 +161,9 @@
def let!(method_name, &block)
let_base.add_let_method(method_name, LetBangMethod.new(&block))
end
def cleanup
- @title = nil
@scenario = nil
@top = nil
@current_step = nil
end
end