require 'spec_helper' module Spec module Example describe ExampleGroupProxy do before(:each) do @group = stub("example group",:nested_descriptions => []).as_null_object end attr_reader :group def proxy @proxy ||= ExampleGroupProxy.new(@group) end describe "#description" do it "provides the example group's description" do group.stub!(:description => "the description") proxy.description.should == "the description" end end describe "#nested_descriptions" do it "provides the example group's nested_descriptions" do group.stub!(:nested_descriptions => ["the description"]) proxy.nested_descriptions.should == ["the description"] end end describe "#filtered_description (DEPRECATED)" do before(:each) do Spec.stub!(:deprecate) end it "is deprecated" do Spec.should_receive(:deprecate) proxy.filtered_description(/(ignore)/) end it "builds the description from the group's nested_descriptions" do group.stub!(:nested_descriptions => ["ignore","the","description"]) proxy.filtered_description(/(ignore)/).should == "the description" end it "filters out description parts that match the supplied regexp" do group.stub!(:nested_descriptions => ["ignore the","description"]) proxy.filtered_description(/(ignore )/).should == "the description" end end describe "#examples" do it "provides a collection of example group proxies" do group.stub!(:example_proxies => ["array","of","proxies"]) proxy.examples.should == ["array","of","proxies"] end end describe "#backtrace (deprecated - use #location)" do before(:each) do Spec.stub!(:deprecate) end it "provides the location of the declaration of this group" do group.stub!(:location => "path/to/location:37") proxy.backtrace.should == "path/to/location:37" end it "warns deprecation" do Spec.should_receive(:deprecate) group.stub!(:location => "path/to/location:37") proxy.backtrace end end describe "#location" do it "provides the location of the declaration of this group" do group.stub!(:location => "path/to/location:37") proxy.location.should == "path/to/location:37" end end describe "#options" do it "provides the options passed to the example group declaration" do group.stub!(:options => {:a => 'b'}) proxy.options.should == {:a => 'b'} end it "excludes :location" do group.stub!(:options => {:location => 'b'}) proxy.options.should == {} end it "excludes :scope" do group.stub!(:options => {:scope => 'b'}) proxy.options.should == {} end it "preserves the original hash" do hash = {:a => 'b', :location => 'here', :scope => 'tiny'} group.stub!(:options => hash) proxy.options.should == {:a => 'b'} hash.should == {:a => 'b', :location => 'here', :scope => 'tiny'} end end end end end