X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ddd5b4cf19a92582fd114914be5bd5a04d3522a7..3f607d565bc0e2c7b1b738301c11c16d069913d5:/vendor/gems/rspec-1.1.2/spec/spec/story/runner/story_mediator_spec.rb diff --git a/vendor/gems/rspec-1.1.2/spec/spec/story/runner/story_mediator_spec.rb b/vendor/gems/rspec-1.1.2/spec/spec/story/runner/story_mediator_spec.rb new file mode 100644 index 000000000..4192e483a --- /dev/null +++ b/vendor/gems/rspec-1.1.2/spec/spec/story/runner/story_mediator_spec.rb @@ -0,0 +1,133 @@ +require File.dirname(__FILE__) + '/../story_helper' + +module Spec + module Story + module Runner + + describe StoryMediator do + before(:each) do + $story_mediator_spec_value = nil + @step_group = StepGroup.new + @step_group.create_matcher(:given, "given") { $story_mediator_spec_value = "given matched" } + @step_group.create_matcher(:when, "when") { $story_mediator_spec_value = "when matched" } + @step_group.create_matcher(:then, "then") { $story_mediator_spec_value = "then matched" } + + @scenario_runner = ScenarioRunner.new + @runner = StoryRunner.new @scenario_runner + @mediator = StoryMediator.new @step_group, @runner + end + + def run_stories + @mediator.run_stories + @runner.run_stories + end + + it "should have no stories" do + @mediator.stories.should be_empty + end + + it "should create two stories" do + @mediator.create_story "story title", "story narrative" + @mediator.create_story "story title 2", "story narrative 2" + run_stories + + @runner.should have(2).stories + @runner.stories.first.title.should == "story title" + @runner.stories.first.narrative.should == "story narrative" + @runner.stories.last.title.should == "story title 2" + @runner.stories.last.narrative.should == "story narrative 2" + end + + it "should create a scenario" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario name" + run_stories + + @runner.should have(1).scenarios + @runner.scenarios.first.name.should == "scenario name" + @runner.scenarios.first.story.should == @runner.stories.first + end + + it "should create a given scenario step if one matches" do + pending("need to untangle the dark mysteries of the story runner - something needs to get stubbed here") do + story = @mediator.create_story "title", "narrative" + @mediator.create_scenario "previous scenario" + @mediator.create_scenario "current scenario" + @mediator.create_given_scenario "previous scenario" + run_stories + + $story_mediator_spec_value.should == "previous scenario matched" + end + end + + it "should create a given step if one matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_given "given" + run_stories + + $story_mediator_spec_value.should == "given matched" + end + + it "should create a pending step if no given step matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_given "no match" + mock_listener = stub_everything("listener") + mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match") + @scenario_runner.add_listener mock_listener + run_stories + end + + it "should create a when step if one matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_when "when" + run_stories + + $story_mediator_spec_value.should == "when matched" + end + + it "should create a pending step if no when step matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_when "no match" + mock_listener = stub_everything("listener") + mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match") + @scenario_runner.add_listener mock_listener + run_stories + end + + it "should create a then step if one matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_then "then" + run_stories + + $story_mediator_spec_value.should == "then matched" + end + + it "should create a pending step if no 'then' step matches" do + @mediator.create_story "title", "narrative" + @mediator.create_scenario "scenario" + @mediator.create_then "no match" + mock_listener = stub_everything("listener") + mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match") + @scenario_runner.add_listener mock_listener + run_stories + end + + it "should pass options to the stories it creates" do + @mediator = StoryMediator.new @step_group, @runner, :foo => :bar + @mediator.create_story "story title", "story narrative" + + run_stories + + @runner.stories.first[:foo].should == :bar + end + + end + + end + end +end \ No newline at end of file