Module | Spec::Story::World |
In: |
lib/spec/story/world.rb
|
# File lib/spec/story/world.rb, line 31 31: def add_listener(listener) 32: listeners() << listener 33: end
# File lib/spec/story/world.rb, line 23 23: def create(cls = Object, *args) 24: cls.new(*args).extend(World) 25: end
# File lib/spec/story/world.rb, line 47 47: def run_given_scenario_with_suspended_listeners(world, type, name, scenario) 48: current_listeners = Array.new(listeners) 49: begin 50: listeners.each { |l| l.found_scenario(type, name) } 51: @listeners.clear 52: scenario.perform(world, name) unless ::Spec::Story::Runner.dry_run 53: ensure 54: @listeners.replace(current_listeners) 55: end 56: end
# File lib/spec/story/world.rb, line 35 35: def step_mother 36: @step_mother ||= StepMother.new 37: end
# File lib/spec/story/world.rb, line 58 58: def store_and_call(world, type, name, *args, &block) 59: if block_given? 60: step_mother.store(type, Step.new(name, &block)) 61: end 62: step = step_mother.find(type, name) 63: 64: step_name = step.name 65: step_names << step_name 66: 67: # It's important to have access to the parsed args here, so 68: # we can give them to the listeners. The HTML reporter needs 69: # the args so it can style them. See the generated output in 70: # story_server/prototype/rspec_stories.html (generated by rake stories) 71: args = step.parse_args(name) if args.empty? 72: begin 73: listeners.each { |l| l.step_upcoming(type, step_name, *args) } 74: step.perform(world, *args) unless ::Spec::Story::Runner.dry_run 75: listeners.each { |l| l.step_succeeded(type, step_name, *args) } 76: rescue Exception => e 77: case e 78: when Spec::Example::ExamplePendingError 79: @listeners.each { |l| l.step_pending(type, step_name, *args) } 80: else 81: @listeners.each { |l| l.step_failed(type, step_name, *args) } 82: end 83: errors << e 84: end 85: end
# File lib/spec/story/world.rb, line 120 120: def And(name, *args, &block) 121: World.store_and_call self, @__previous_step, name, *args, &block 122: end
# File lib/spec/story/world.rb, line 105 105: def Given(name, *args, &block) 106: World.store_and_call self, :given, name, *args, &block 107: @__previous_step = :given 108: end
# File lib/spec/story/world.rb, line 100 100: def GivenScenario(name) 101: World.run_given_scenario_with_suspended_listeners(self, 'given scenario''given scenario', name, GivenScenario.new(name)) 102: @__previous_step = :given 103: end
# File lib/spec/story/world.rb, line 115 115: def Then(name, *args, &block) 116: World.store_and_call self, :then, name, *args, &block 117: @__previous_step = :then 118: end
# File lib/spec/story/world.rb, line 110 110: def When(name, *args, &block) 111: World.store_and_call self, :when, name, *args, &block 112: @__previous_step = :when 113: end