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