+++ /dev/null
-require File.dirname(__FILE__) + '/story_helper'
-
-module Spec
- module Story
- describe StepGroup do
- before(:each) do
- @step_group = StepGroup.new
- end
-
- it "should not find a matcher if empty" do
- @step_group.find(:given, "this and that").should be_nil
- end
-
- it "should create a given_scenario matcher" do
- step = @step_group.given_scenario("this and that") {}
- @step_group.find(:given_scenario, "this and that").should_not be_nil
- @step_group.find(:given_scenario, "this and that").should equal(step)
- end
-
- it "should create a given matcher" do
- step = @step_group.given("this and that") {}
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should create a when matcher" do
- step = @step_group.when("this and that") {}
- @step_group.find(:when, "this and that").should equal(step)
- end
-
- it "should create a them matcher" do
- step = @step_group.then("this and that") {}
- @step_group.find(:then, "this and that").should equal(step)
- end
-
- it "should add a matcher object" do
- step = Step.new("this and that") {}
- @step_group.add(:given, step)
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should add it matchers to another StepGroup (with one given)" do
- source = StepGroup.new
- target = StepGroup.new
- step = source.given("this and that") {}
- source.add_to target
- target.find(:given, "this and that").should equal(step)
- end
-
- it "should add it matchers to another StepGroup (with some of each type)" do
- source = StepGroup.new
- target = StepGroup.new
- given_scenario = source.given_scenario("1") {}
- given = source.given("1") {}
- when1 = source.when("1") {}
- when2 = source.when("2") {}
- then1 = source.then("1") {}
- then2 = source.then("2") {}
- then3 = source.then("3") {}
- source.add_to target
- target.find(:given_scenario, "1").should equal(given_scenario)
- target.find(:given, "1").should equal(given)
- target.find(:when, "1").should equal(when1)
- target.find(:when, "2").should equal(when2)
- target.find(:then, "1").should equal(then1)
- target.find(:then, "2").should equal(then2)
- target.find(:then, "3").should equal(then3)
- end
-
- it "should append another collection" do
- matchers_to_append = StepGroup.new
- step = matchers_to_append.given("this and that") {}
- @step_group << matchers_to_append
- @step_group.find(:given, "this and that").should equal(step)
- end
-
- it "should append several other collections" do
- matchers_to_append = StepGroup.new
- more_matchers_to_append = StepGroup.new
- first_matcher = matchers_to_append.given("this and that") {}
- second_matcher = more_matchers_to_append.given("and the other") {}
- @step_group << matchers_to_append
- @step_group << more_matchers_to_append
- @step_group.find(:given, "this and that").should equal(first_matcher)
- @step_group.find(:given, "and the other").should equal(second_matcher)
- end
-
- it "should yield itself on initialization" do
- begin
- $step_group_spec_step = nil
- matchers = StepGroup.new do |matchers|
- $step_group_spec_step = matchers.given("foo") {}
- end
- $step_group_spec_step.matches?("foo").should be_true
- ensure
- $step_group_spec_step = nil
- end
- end
-
- it "should support defaults" do
- class StepGroupSubclass < StepGroup
- steps do |add|
- add.given("foo") {}
- end
- end
- StepGroupSubclass.new.find(:given, "foo").should_not be_nil
- end
-
- it "should create a Given" do
- sub = Class.new(StepGroup).new
- step = sub.Given("foo") {}
- sub.find(:given, "foo").should == step
- end
-
- it "should create a When" do
- sub = Class.new(StepGroup).new
- step = sub.When("foo") {}
- sub.find(:when, "foo").should == step
- end
-
- it "should create a Then" do
- sub = Class.new(StepGroup).new
- step = sub.Then("foo") {}
- sub.find(:then, "foo").should == step
- end
-
- it "should create steps in a block" do
- sub = Class.new(StepGroup).new do
- Given("a given") {}
- When("a when") {}
- Then("a then") {}
- end
- sub.find(:given, "a given").should_not be_nil
- sub.find(:when, "a when").should_not be_nil
- sub.find(:then, "a then").should_not be_nil
- end
-
- it "should clear itself" do
- step = @step_group.given("this and that") {}
- @step_group.clear
- @step_group.find(:given, "this and that").should be_nil
- end
-
- it "should tell you when it is empty" do
- @step_group.should be_empty
- end
-
- it "should tell you when it is not empty" do
- @step_group.given("this and that") {}
- @step_group.should_not be_empty
- end
-
- it "should handle << nil" do
- @step_group << nil
- end
- end
- end
-end