Module Spec::Story::World
In: lib/spec/story/world.rb

Methods

Included Modules

::Spec::Example::Pending ::Spec::Matchers

Public Class methods

[Source]

    # File lib/spec/story/world.rb, line 30
30:         def add_listener(listener)
31:           listeners() << listener
32:         end

[Source]

    # File lib/spec/story/world.rb, line 22
22:         def create(cls = Object, *args)
23:           cls.new(*args).extend(World)
24:         end

[Source]

    # File lib/spec/story/world.rb, line 86
86:         def errors
87:           @errors ||= []
88:         end

[Source]

    # File lib/spec/story/world.rb, line 26
26:         def listeners
27:           @listeners ||= []
28:         end

[Source]

    # File lib/spec/story/world.rb, line 46
46:         def run_given_scenario_with_suspended_listeners(world, type, name, scenario)
47:           current_listeners = Array.new(listeners)
48:           begin
49:             listeners.each { |l| l.found_scenario(type, name) }
50:             @listeners.clear
51:             scenario.perform(world, name) unless ::Spec::Story::Runner.dry_run
52:           ensure
53:             @listeners.replace(current_listeners)
54:           end
55:         end

[Source]

    # File lib/spec/story/world.rb, line 34
34:         def step_mother
35:           @step_mother ||= StepMother.new
36:         end

[Source]

    # File lib/spec/story/world.rb, line 42
42:         def step_names
43:           @step_names ||= []
44:         end

[Source]

    # File lib/spec/story/world.rb, line 57
57:         def store_and_call(world, type, name, *args, &block)
58:           if block_given?
59:             step_mother.store(type, Step.new(name, &block))
60:           end
61:           step = step_mother.find(type, name)
62: 
63:           step_name = step.name
64:           step_names << step_name
65:           
66:           # It's important to have access to the parsed args here, so
67:           # we can give them to the listeners. The HTML reporter needs
68:           # the args so it can style them. See the generated output in
69:           # story_server/prototype/rspec_stories.html (generated by rake stories)
70:           args = step.parse_args(name) if args.empty?
71:           begin
72:             listeners.each { |l| l.step_upcoming(type, step_name, *args) }
73:             step.perform(world, *args) unless ::Spec::Story::Runner.dry_run
74:             listeners.each { |l| l.step_succeeded(type, step_name, *args) }
75:           rescue Exception => e
76:             case e
77:             when Spec::Example::ExamplePendingError
78:               @listeners.each { |l| l.step_pending(type, step_name, *args) }
79:             else
80:               @listeners.each { |l| l.step_failed(type, step_name, *args) }
81:             end
82:             errors << e
83:           end
84:         end

[Source]

    # File lib/spec/story/world.rb, line 38
38:         def use(steps)
39:           step_mother.use(steps)
40:         end

Public Instance methods

[Source]

     # File lib/spec/story/world.rb, line 119
119:       def And(name, *args, &block)
120:         World.store_and_call self, @__previous_step, name, *args, &block
121:       end

[Source]

     # File lib/spec/story/world.rb, line 104
104:       def Given(name, *args, &block)
105:         World.store_and_call self, :given, name, *args, &block
106:         @__previous_step = :given
107:       end

[Source]

     # File lib/spec/story/world.rb, line 99
 99:       def GivenScenario(name)
100:         World.run_given_scenario_with_suspended_listeners(self, 'given scenario''given scenario', name, GivenScenario.new(name))
101:         @__previous_step = :given
102:       end

[Source]

     # File lib/spec/story/world.rb, line 114
114:       def Then(name, *args, &block)
115:         World.store_and_call self, :then, name, *args, &block
116:         @__previous_step = :then
117:       end

[Source]

     # File lib/spec/story/world.rb, line 109
109:       def When(name, *args, &block)
110:         World.store_and_call self, :when, name, *args, &block
111:         @__previous_step = :when
112:       end

[Source]

    # File lib/spec/story/world.rb, line 95
95:       def errors
96:         World.errors
97:       end

[Source]

    # File lib/spec/story/world.rb, line 91
91:       def start_collecting_errors
92:         errors.clear
93:       end

[Validate]