Upgraded Rails and RSpec
[monkeycharger.git] / vendor / plugins / rspec / spec / spec / dsl / example_should_raise_spec.rb
bloba6d5820680bb11a4d37d215104c54067becb3b45
1 require File.dirname(__FILE__) + '/../../spec_helper.rb'
3 module Spec
4   module DSL
5     describe Example, " declared with {:should_raise => ...}" do
6       before(:each) do
7         @reporter = mock("reporter")
8         @reporter.stub!(:example_started)
9       end
10   
11       def verify_error(error, message=nil)
12         error.should be_an_instance_of(Spec::Expectations::ExpectationNotMetError)
13         unless message.nil?
14           return error.message.should =~ message if Regexp === message
15           return error.message.should == message
16         end
17       end
19       it "true} should pass when there is an ExpectationNotMetError" do
20         example = Spec::DSL:: Example.new("example", :should_raise => true) do
21           raise Spec::Expectations::ExpectationNotMetError
22         end
23         @reporter.should_receive(:example_finished) do |description, error|
24           error.should be_nil
25         end
26         example.run(@reporter, nil, nil, nil, nil)
27       end
29       it "true} should fail if nothing is raised" do
30         example = Spec::DSL:: Example.new("example", :should_raise => true) {}
31         @reporter.should_receive(:example_finished) do |example_name, error|
32           verify_error(error, /example block expected Exception but nothing was raised/)
33         end
34         example.run(@reporter, nil, nil, nil, nil)
35       end
37       it "NameError} should pass when there is a NameError" do
38         example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
39           raise NameError
40         end
41         @reporter.should_receive(:example_finished) do |example_name, error|
42           error.should be_nil
43         end
44         example.run(@reporter, nil, nil, nil, nil)
45       end
47       it "NameError} should fail when there is no error" do
48         example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
49           #do nothing
50         end
51         @reporter.should_receive(:example_finished) do |example_name, error|
52           verify_error(error,/example block expected NameError but nothing was raised/)
53         end
54         example.run(@reporter, nil, nil, nil, nil)
55       end
57       it "NameError} should fail when there is the wrong error" do
58         example = Spec::DSL:: Example.new("example", :should_raise => NameError) do
59           raise RuntimeError
60         end
61         @reporter.should_receive(:example_finished) do |example_name, error|
62           verify_error(error, /example block expected NameError but raised.+RuntimeError/)
63         end
64         example.run(@reporter, nil, nil, nil, nil)
65       end
67       it "[NameError]} should pass when there is a NameError" do
68         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
69           raise NameError
70         end
71         @reporter.should_receive(:example_finished) do |description, error|
72           error.should be_nil
73         end
74         example.run(@reporter, nil, nil, nil, nil)
75       end
77       it "[NameError]} should fail when there is no error" do
78         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
79         end
80         @reporter.should_receive(:example_finished) do |description, error|
81           verify_error(error, /example block expected NameError but nothing was raised/)
82         end
83         example.run(@reporter, nil, nil, nil, nil)
84       end
86       it "[NameError]} should fail when there is the wrong error" do
87         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError]) do
88           raise RuntimeError
89         end
90         @reporter.should_receive(:example_finished) do |description, error|
91           verify_error(error, /example block expected NameError but raised.+RuntimeError/)
92         end
93         example.run(@reporter, nil, nil, nil, nil)
94       end
96       it "[NameError, 'message'} should pass when there is a NameError with the right message" do
97         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
98           raise NameError, 'expected'
99         end
100         @reporter.should_receive(:example_finished) do |description, error|
101           error.should be_nil
102         end
103         example.run(@reporter, nil, nil, nil, nil)
104       end
106       it "[NameError, 'message'} should pass when there is a NameError with a message matching a regex" do
107         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /xpec/]) do
108           raise NameError, 'expected'
109         end
110         @reporter.should_receive(:example_finished) do |description, error|
111           error.should be_nil
112         end
113         example.run(@reporter, nil, nil, nil, nil)
114       end
116       it "[NameError, 'message'} should fail when there is a NameError with the wrong message" do
117         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, 'expected']) do
118           raise NameError, 'wrong message'
119         end
120         @reporter.should_receive(:example_finished) do |description, error|
121           verify_error(error, /example block expected #<NameError: expected> but raised #<NameError: wrong message>/)
122         end
123         example.run(@reporter, nil, nil, nil, nil)
124       end
126       it "[NameError, 'message'} should fail when there is a NameError with a message not matching regexp" do
127         example = Spec::DSL:: Example.new("spec", :should_raise => [NameError, /exp/]) do
128           raise NameError, 'wrong message'
129         end
130         @reporter.should_receive(:example_finished) do |description, error|
131           verify_error(error, /example block expected #<NameError: \(\?-mix:exp\)> but raised #<NameError: wrong message>/)
132         end
133         example.run(@reporter, nil, nil, nil, nil)
134       end
135     end
136   end