+++ /dev/null
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-module Spec
- module Example
- describe 'ExampleGroupMethods' do
- it_should_behave_like "sandboxed rspec_options"
- attr_reader :example_group, :result, :reporter
- before(:each) do
- options.formatters << mock("formatter", :null_object => true)
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(@options)
- options.reporter = reporter
- @example_group = Class.new(ExampleGroup) do
- describe("ExampleGroup")
- it "does nothing"
- end
- class << example_group
- public :include
- end
- @result = nil
- end
-
- after(:each) do
- ExampleGroup.reset
- end
-
- describe "#describe" do
- attr_reader :child_example_group
- before do
- @child_example_group = @example_group.describe("Another ExampleGroup") do
- it "should pass" do
- true.should be_true
- end
- end
- end
-
- it "should create a subclass of the ExampleGroup when passed a block" do
- child_example_group.superclass.should == @example_group
- @options.example_groups.should include(child_example_group)
- end
-
- it "should not inherit examples" do
- child_example_group.examples.length.should == 1
- end
- end
-
- describe "#it" do
- it "should should create an example instance" do
- lambda {
- @example_group.it("")
- }.should change { @example_group.examples.length }.by(1)
- end
- end
-
- describe "#xit" do
- before(:each) do
- Kernel.stub!(:warn)
- end
-
- it "should NOT should create an example instance" do
- lambda {
- @example_group.xit("")
- }.should_not change(@example_group.examples, :length)
- end
-
- it "should warn that it is disabled" do
- Kernel.should_receive(:warn).with("Example disabled: foo")
- @example_group.xit("foo")
- end
- end
-
- describe "#examples" do
- it "should have Examples" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- it "should pass" do
- 1.should == 1
- end
- end
- example_group.examples.length.should == 1
- example_group.examples.first.description.should == "should pass"
- end
-
- it "should not include methods that begin with test (only when TU interop is loaded)" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def test_any_args(*args)
- true.should be_true
- end
- def test_something
- 1.should == 1
- end
- def test
- raise "This is not a real test"
- end
- def testify
- raise "This is not a real test"
- end
- end
- example_group.examples.length.should == 0
- example_group.run.should be_true
- end
-
- it "should include methods that begin with should and has an arity of 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def shouldCamelCase
- true.should be_true
- end
- def should_any_args(*args)
- true.should be_true
- end
- def should_something
- 1.should == 1
- end
- def should_not_something
- 1.should_not == 2
- end
- def should
- raise "This is not a real example"
- end
- def should_not
- raise "This is not a real example"
- end
- end
- example_group = example_group.dup
- example_group.examples.length.should == 4
- descriptions = example_group.examples.collect {|example| example.description}.sort
- descriptions.should include("shouldCamelCase")
- descriptions.should include("should_any_args")
- descriptions.should include("should_something")
- descriptions.should include("should_not_something")
- end
-
- it "should not include methods that begin with test_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def test_invalid(foo)
- 1.should == 1
- end
- def testInvalidCamelCase(foo)
- 1.should == 1
- end
- end
- example_group.examples.length.should == 0
- end
-
- it "should not include methods that begin with should_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- def should_invalid(foo)
- 1.should == 2
- end
- def shouldInvalidCamelCase(foo)
- 1.should == 3
- end
- def should_not_invalid(foo)
- 1.should == 4
- end
- def should_valid
- 1.should == 1
- end
- end
- example_group.examples.length.should == 1
- example_group.run.should be_true
- end
-
- it "should run should_methods" do
- example_group = Class.new(ExampleGroup) do
- def should_valid
- 1.should == 2
- end
- end
- example_group.examples.length.should == 1
- example_group.run.should be_false
- end
- end
-
- describe "#set_description" do
- attr_reader :example_group
- before do
- class << example_group
- public :set_description
- end
- end
-
- describe "#set_description(String)" do
- before(:each) do
- example_group.set_description("abc")
- end
-
- specify ".description should return the String passed into .set_description" do
- example_group.description.should == "abc"
- end
-
- specify ".described_type should provide nil as its type" do
- example_group.described_type.should be_nil
- end
- end
-
- describe "#set_description(Type)" do
- before(:each) do
- example_group.set_description(ExampleGroup)
- end
-
- specify ".description should return a String representation of that type (fully qualified) as its name" do
- example_group.description.should == "Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "#set_description(String, Type)" do
- before(:each) do
- example_group.set_description("behaving", ExampleGroup)
- end
-
- specify ".description should return String then space then Type" do
- example_group.description.should == "behaving Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "#set_description(Type, String not starting with a space)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "behaving")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup behaving"
- end
- end
-
- describe "#set_description(Type, String starting with .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, ".behaving")
- end
-
- specify ".description should return the Type then String" do
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
- end
- end
-
- describe "#set_description(Type, String containing .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "calling a.b")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
- end
- end
-
- describe "#set_description(Type, String starting with .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, ".behaving")
- end
-
- specify "should return the Type then String" do
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
- end
- end
-
- describe "#set_description(Type, String containing .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "is #1")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup is #1"
- end
- end
-
- describe "#set_description(String, Type, String)" do
- before(:each) do
- example_group.set_description("A", Hash, "with one entry")
- end
-
- specify ".description should return the first String then space then Type then second String" do
- example_group.description.should == "A Hash with one entry"
- end
- end
-
- describe "#set_description(Hash representing options)" do
- before(:each) do
- example_group.set_description(:a => "b", :spec_path => "blah")
- end
-
- it ".spec_path should expand the passed in :spec_path option passed into the constructor" do
- example_group.spec_path.should == File.expand_path("blah")
- end
-
- it ".description_options should return all the options passed in" do
- example_group.description_options.should == {:a => "b", :spec_path => "blah"}
- end
-
- end
- end
-
- describe "#description" do
- it "should return the same description instance for each call" do
- example_group.description.should eql(example_group.description)
- end
-
- it "should not add a space when description_text begins with #" do
- child_example_group = Class.new(example_group) do
- describe("#foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup#foobar Does something"
- end
-
- it "should not add a space when description_text begins with ." do
- child_example_group = Class.new(example_group) do
- describe(".foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup.foobar Does something"
- end
-
- it "should return the class name if nil" do
- example_group.set_description(nil)
- example_group.description.should =~ /Class:/
- end
-
- it "should return the class name if nil" do
- example_group.set_description("")
- example_group.description.should =~ /Class:/
- end
- end
-
- describe "#description_parts" do
- it "should return an Array of the current class description args" do
- example_group.description_parts.should == [example_group.description]
- end
-
- it "should return an Array of the description args from each class in the hierarchy" do
- child_example_group = Class.new(example_group)
- child_example_group.describe("Child", ExampleGroup)
- child_example_group.description.should_not be_empty
-
- grand_child_example_group = Class.new(child_example_group)
- grand_child_example_group.describe("GrandChild", ExampleGroup)
- grand_child_example_group.description.should_not be_empty
-
- grand_child_example_group.description_parts.should == [
- "ExampleGroup",
- "Child",
- Spec::Example::ExampleGroup,
- "GrandChild",
- Spec::Example::ExampleGroup
- ]
- end
- end
-
- describe "#described_type" do
- it "should return passed in type" do
- child_example_group = Class.new(example_group) do
- describe Object
- end
- child_example_group.described_type.should == Object
- end
-
- it "should return #described_type of superclass when no passed in type" do
- parent_example_group = Class.new(ExampleGroup) do
- describe Object, "#foobar"
- end
- child_example_group = Class.new(parent_example_group) do
- describe "not a type"
- end
- child_example_group.described_type.should == Object
- end
- end
-
- describe "#remove_after" do
- it "should unregister a given after(:each) block" do
- after_all_ran = false
- @example_group.it("example") {}
- proc = Proc.new { after_all_ran = true }
- ExampleGroup.after(:each, &proc)
- @example_group.run
- after_all_ran.should be_true
-
- after_all_ran = false
- ExampleGroup.remove_after(:each, &proc)
- @example_group.run
- after_all_ran.should be_false
- end
- end
-
- describe "#include" do
- it "should have accessible class methods from included module" do
- mod1_method_called = false
- mod1 = Module.new do
- class_methods = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- metaclass.class_eval do
- define_method(:included) do |receiver|
- receiver.extend class_methods
- end
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- class_methods = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- metaclass.class_eval do
- define_method(:included) do |receiver|
- receiver.extend class_methods
- end
- end
- end
-
- @example_group.include mod1, mod2
-
- @example_group.mod1_method
- @example_group.mod2_method
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
- end
-
- describe "#number_of_examples" do
- it "should count number of specs" do
- proc do
- @example_group.it("one") {}
- @example_group.it("two") {}
- @example_group.it("three") {}
- @example_group.it("four") {}
- end.should change {@example_group.number_of_examples}.by(4)
- end
- end
-
- describe "#class_eval" do
- it "should allow constants to be defined" do
- example_group = Class.new(ExampleGroup) do
- describe('example')
- FOO = 1
- it "should reference FOO" do
- FOO.should == 1
- end
- end
- example_group.run
- Object.const_defined?(:FOO).should == false
- end
- end
-
- describe '#register' do
- it "should add ExampleGroup to set of ExampleGroups to be run" do
- example_group.register
- options.example_groups.should include(example_group)
- end
- end
-
- describe '#unregister' do
- before do
- example_group.register
- options.example_groups.should include(example_group)
- end
-
- it "should remove ExampleGroup from set of ExampleGroups to be run" do
- example_group.unregister
- options.example_groups.should_not include(example_group)
- end
- end
- end
- end
-end
\ No newline at end of file