--- /dev/null
+require File.dirname(__FILE__) + '/story_helper'
+
+module Spec
+ module Story
+ describe Story do
+ it 'should run itself in a given object' do
+ # given
+ $instance = nil
+ story = Story.new 'title', 'narrative' do
+ $instance = self
+ end
+ object = Object.new
+
+ # when
+ story.run_in(object)
+
+ # then
+ $instance.should be(object)
+ end
+
+ it 'should not raise an error if no block is supplied' do
+ # when
+ error = exception_from do
+ Story.new 'title', 'narrative'
+ end
+
+ # then
+ error.should be_nil
+ end
+
+ it "should raise when error raised running in another object" do
+ #given
+ story = Story.new 'title', 'narrative' do
+ raise "this is raised in the story"
+ end
+ object = Object.new
+
+ # when/then
+ lambda do
+ story.run_in(object)
+ end.should raise_error
+ end
+
+ it "should use the steps it is told to using a StepGroup" do
+ story = Story.new("title", "narrative", :steps => steps = StepGroup.new) do end
+ assignee = mock("assignee")
+ assignee.should_receive(:use).with(steps)
+ story.assign_steps_to(assignee)
+ end
+
+ it "should use the steps it is told to using a key" do
+ begin
+ orig_rspec_story_steps = $rspec_story_steps
+ $rspec_story_steps = StepGroupHash.new
+ $rspec_story_steps[:foo] = steps = Object.new
+
+ story = Story.new("title", "narrative", :steps_for => :foo) do end
+ assignee = mock("assignee")
+
+ assignee.should_receive(:use).with(steps)
+ story.assign_steps_to(assignee)
+ ensure
+ $rspec_story_steps = orig_rspec_story_steps
+ end
+ end
+
+ it "should use the steps it is told to using multiple keys" do
+ begin
+ orig_rspec_story_steps = $rspec_story_steps
+ $rspec_story_steps = StepGroupHash.new
+ $rspec_story_steps[:foo] = foo_steps = Object.new
+ $rspec_story_steps[:bar] = bar_steps = Object.new
+
+ story = Story.new("title", "narrative", :steps_for => [:foo, :bar]) do end
+ assignee = mock("assignee")
+
+ assignee.should_receive(:use).with(foo_steps)
+ assignee.should_receive(:use).with(bar_steps)
+ story.assign_steps_to(assignee)
+ ensure
+ $rspec_story_steps = orig_rspec_story_steps
+ end
+ end
+ end
+ end
+end