mcmire-rspec-rails 1.1.99.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +174 -0
- data/License.txt +33 -0
- data/Manifest.txt +164 -0
- data/README.txt +45 -0
- data/Rakefile +63 -0
- data/TODO.txt +1 -0
- data/Upgrade.markdown +52 -0
- data/features/step_definitions/people.rb +6 -0
- data/features/support/env.rb +13 -0
- data/features/transactions/transactions_should_rollback.feature +16 -0
- data/generators/rspec/CHANGES +1 -0
- data/generators/rspec/rspec_generator.rb +37 -0
- data/generators/rspec/templates/previous_failures.txt +0 -0
- data/generators/rspec/templates/rcov.opts +2 -0
- data/generators/rspec/templates/rspec.rake +177 -0
- data/generators/rspec/templates/script/autospec +5 -0
- data/generators/rspec/templates/script/spec +4 -0
- data/generators/rspec/templates/script/spec_server +37 -0
- data/generators/rspec/templates/spec.opts +4 -0
- data/generators/rspec/templates/spec_helper.rb +47 -0
- data/generators/rspec_controller/USAGE +33 -0
- data/generators/rspec_controller/rspec_controller_generator.rb +45 -0
- data/generators/rspec_controller/templates/controller_spec.rb +25 -0
- data/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/generators/rspec_default_values.rb +19 -0
- data/generators/rspec_model/USAGE +18 -0
- data/generators/rspec_model/rspec_model_generator.rb +35 -0
- data/generators/rspec_model/templates/model_spec.rb +15 -0
- data/generators/rspec_scaffold/rspec_scaffold_generator.rb +150 -0
- data/generators/rspec_scaffold/templates/controller_spec.rb +171 -0
- data/generators/rspec_scaffold/templates/edit_erb_spec.rb +27 -0
- data/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
- data/generators/rspec_scaffold/templates/index_erb_spec.rb +28 -0
- data/generators/rspec_scaffold/templates/new_erb_spec.rb +27 -0
- data/generators/rspec_scaffold/templates/routing_spec.rb +63 -0
- data/generators/rspec_scaffold/templates/show_erb_spec.rb +23 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +1 -0
- data/lib/autotest/rails_rspec.rb +76 -0
- data/lib/spec/rails.rb +37 -0
- data/lib/spec/rails/example.rb +53 -0
- data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
- data/lib/spec/rails/example/controller_example_group.rb +242 -0
- data/lib/spec/rails/example/cookies_proxy.rb +29 -0
- data/lib/spec/rails/example/functional_example_group.rb +84 -0
- data/lib/spec/rails/example/helper_example_group.rb +167 -0
- data/lib/spec/rails/example/model_example_group.rb +14 -0
- data/lib/spec/rails/example/render_observer.rb +67 -0
- data/lib/spec/rails/example/routing_helpers.rb +68 -0
- data/lib/spec/rails/example/view_example_group.rb +186 -0
- data/lib/spec/rails/extensions.rb +15 -0
- data/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
- data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
- data/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
- data/lib/spec/rails/extensions/action_view/base.rb +33 -0
- data/lib/spec/rails/extensions/active_record/base.rb +43 -0
- data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
- data/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
- data/lib/spec/rails/extensions/spec/runner/configuration.rb +48 -0
- data/lib/spec/rails/interop/testcase.rb +14 -0
- data/lib/spec/rails/matchers.rb +40 -0
- data/lib/spec/rails/matchers/ar_be_valid.rb +44 -0
- data/lib/spec/rails/matchers/assert_select.rb +131 -0
- data/lib/spec/rails/matchers/change.rb +11 -0
- data/lib/spec/rails/matchers/have_text.rb +57 -0
- data/lib/spec/rails/matchers/include_text.rb +54 -0
- data/lib/spec/rails/matchers/redirect_to.rb +126 -0
- data/lib/spec/rails/matchers/render_template.rb +114 -0
- data/lib/spec/rails/mocks.rb +135 -0
- data/lib/spec/rails/spec_server.rb +97 -0
- data/lib/spec/rails/story_adapter.rb +79 -0
- data/lib/spec/rails/version.rb +16 -0
- data/rspec-rails.gemspec +39 -0
- data/spec/autotest/mappings_spec.rb +36 -0
- data/spec/rails_suite.rb +7 -0
- data/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/spec/resources/controllers/application.rb +9 -0
- data/spec/resources/controllers/controller_spec_controller.rb +116 -0
- data/spec/resources/controllers/redirect_spec_controller.rb +70 -0
- data/spec/resources/controllers/render_spec_controller.rb +30 -0
- data/spec/resources/controllers/rjs_spec_controller.rb +58 -0
- data/spec/resources/helpers/addition_helper.rb +5 -0
- data/spec/resources/helpers/explicit_helper.rb +46 -0
- data/spec/resources/helpers/more_explicit_helper.rb +5 -0
- data/spec/resources/helpers/plugin_application_helper.rb +6 -0
- data/spec/resources/helpers/view_spec_helper.rb +13 -0
- data/spec/resources/models/animal.rb +4 -0
- data/spec/resources/models/person.rb +18 -0
- data/spec/resources/models/thing.rb +3 -0
- data/spec/resources/views/controller_spec/_partial.rhtml +0 -0
- data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/spec/resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/spec/resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/spec/resources/views/layouts/application.rhtml +0 -0
- data/spec/resources/views/layouts/simple.rhtml +0 -0
- data/spec/resources/views/objects/_object.html.erb +1 -0
- data/spec/resources/views/render_spec/_a_partial.rhtml +0 -0
- data/spec/resources/views/render_spec/action_with_alternate_layout.rhtml +0 -0
- data/spec/resources/views/render_spec/some_action.html.erb +0 -0
- data/spec/resources/views/render_spec/some_action.js.rjs +1 -0
- data/spec/resources/views/render_spec/some_action.rjs +1 -0
- data/spec/resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/spec/resources/views/rjs_spec/hide_div.rjs +1 -0
- data/spec/resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/spec/resources/views/rjs_spec/insert_html.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html.rjs +1 -0
- data/spec/resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/spec/resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/spec/resources/views/tag_spec/no_tags.rhtml +1 -0
- data/spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/spec/resources/views/view_spec/_partial.rhtml +2 -0
- data/spec/resources/views/view_spec/_partial_used_twice.rhtml +0 -0
- data/spec/resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/spec/resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
- data/spec/resources/views/view_spec/_spacer.rhtml +1 -0
- data/spec/resources/views/view_spec/accessor.rhtml +5 -0
- data/spec/resources/views/view_spec/block_helper.rhtml +3 -0
- data/spec/resources/views/view_spec/entry_form.rhtml +2 -0
- data/spec/resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/spec/resources/views/view_spec/foo/show.rhtml +1 -0
- data/spec/resources/views/view_spec/implicit_helper.rhtml +2 -0
- data/spec/resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/spec/resources/views/view_spec/path_params.html.erb +1 -0
- data/spec/resources/views/view_spec/should_not_receive.rhtml +3 -0
- data/spec/resources/views/view_spec/template_with_partial.rhtml +5 -0
- data/spec/resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
- data/spec/resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
- data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
- data/spec/spec/rails/example/configuration_spec.rb +65 -0
- data/spec/spec/rails/example/controller_example_group_spec.rb +275 -0
- data/spec/spec/rails/example/controller_isolation_spec.rb +56 -0
- data/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
- data/spec/spec/rails/example/error_handling_spec.rb +90 -0
- data/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
- data/spec/spec/rails/example/helper_example_group_spec.rb +206 -0
- data/spec/spec/rails/example/model_example_group_spec.rb +20 -0
- data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
- data/spec/spec/rails/example/view_example_group_spec.rb +335 -0
- data/spec/spec/rails/extensions/action_view_base_spec.rb +48 -0
- data/spec/spec/rails/extensions/active_record_spec.rb +14 -0
- data/spec/spec/rails/interop/testcase_spec.rb +70 -0
- data/spec/spec/rails/matchers/ar_be_valid_spec.rb +45 -0
- data/spec/spec/rails/matchers/assert_select_spec.rb +811 -0
- data/spec/spec/rails/matchers/errors_on_spec.rb +25 -0
- data/spec/spec/rails/matchers/have_text_spec.rb +70 -0
- data/spec/spec/rails/matchers/include_text_spec.rb +62 -0
- data/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
- data/spec/spec/rails/matchers/render_template_spec.rb +183 -0
- data/spec/spec/rails/matchers/should_change_spec.rb +15 -0
- data/spec/spec/rails/mocks/ar_classes.rb +10 -0
- data/spec/spec/rails/mocks/mock_model_spec.rb +106 -0
- data/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
- data/spec/spec/rails/sample_modified_fixture.rb +8 -0
- data/spec/spec/rails/sample_spec.rb +8 -0
- data/spec/spec/rails/spec_server_spec.rb +107 -0
- data/spec/spec/rails/spec_spec.rb +11 -0
- data/spec/spec_helper.rb +78 -0
- metadata +262 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
describe Configuration do
|
6
|
+
|
7
|
+
def config
|
8
|
+
@config ||= Configuration.new
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#use_transactional_fixtures" do
|
12
|
+
it "should return ActiveSupport::TestCase.use_transactional_fixtures" do
|
13
|
+
config.use_transactional_fixtures.should == ActiveSupport::TestCase.use_transactional_fixtures
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should set ActiveSupport::TestCase.use_transactional_fixtures to false" do
|
17
|
+
ActiveSupport::TestCase.should_receive(:use_transactional_fixtures=).with(false)
|
18
|
+
config.use_transactional_fixtures = false
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should set ActiveSupport::TestCase.use_transactional_fixtures to true" do
|
22
|
+
ActiveSupport::TestCase.should_receive(:use_transactional_fixtures=).with(true)
|
23
|
+
config.use_transactional_fixtures = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#use_instantiated_fixtures" do
|
28
|
+
it "should return ActiveSupport::TestCase.use_transactional_fixtures" do
|
29
|
+
config.use_instantiated_fixtures.should == ActiveSupport::TestCase.use_instantiated_fixtures
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should set ActiveSupport::TestCase.use_instantiated_fixtures to false" do
|
33
|
+
ActiveSupport::TestCase.should_receive(:use_instantiated_fixtures=).with(false)
|
34
|
+
config.use_instantiated_fixtures = false
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should set ActiveSupport::TestCase.use_instantiated_fixtures to true" do
|
38
|
+
ActiveSupport::TestCase.should_receive(:use_instantiated_fixtures=).with(true)
|
39
|
+
config.use_instantiated_fixtures = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#fixture_path" do
|
44
|
+
it "should default to RAILS_ROOT + '/spec/fixtures'" do
|
45
|
+
config.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
|
46
|
+
ActiveSupport::TestCase.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should set fixture_path" do
|
50
|
+
config.fixture_path = "/new/path"
|
51
|
+
config.fixture_path.should == "/new/path"
|
52
|
+
ActiveSupport::TestCase.fixture_path.should == "/new/path"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#global_fixtures" do
|
57
|
+
it "should set fixtures on TestCase" do
|
58
|
+
ActiveSupport::TestCase.should_receive(:fixtures).with(:blah)
|
59
|
+
config.global_fixtures = [:blah]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,275 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
require 'controller_spec_controller'
|
3
|
+
require File.join(File.dirname(__FILE__), "/shared_routing_example_group_examples.rb")
|
4
|
+
|
5
|
+
['integration', 'isolation'].each do |mode|
|
6
|
+
describe "A controller example running in #{mode} mode", :type => :controller do
|
7
|
+
controller_name :controller_spec
|
8
|
+
integrate_views if mode == 'integration'
|
9
|
+
|
10
|
+
accesses_configured_helper_methods
|
11
|
+
include RoutingExampleGroupSpec
|
12
|
+
|
13
|
+
describe "with an implicit subject" do
|
14
|
+
it "uses the controller" do
|
15
|
+
subject.should == controller
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "with a specified subject" do
|
20
|
+
subject { 'specified' }
|
21
|
+
|
22
|
+
it "uses the specified subject" do
|
23
|
+
subject.should == 'specified'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should provide controller.session as session" do
|
28
|
+
get 'action_with_template'
|
29
|
+
session.should equal(controller.session)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should provide the same session object before and after the action" do
|
33
|
+
session_before = session
|
34
|
+
get 'action_with_template'
|
35
|
+
session.should equal(session_before)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should keep the same data in the session before and after the action" do
|
39
|
+
session[:foo] = :bar
|
40
|
+
get 'action_with_template'
|
41
|
+
session[:foo].should == :bar
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should ensure controller.session is NOT nil before the action" do
|
45
|
+
controller.session.should_not be_nil
|
46
|
+
get 'action_with_template'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should ensure controller.session is NOT nil after the action" do
|
50
|
+
get 'action_with_template'
|
51
|
+
controller.session.should_not be_nil
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should allow specifying a partial with partial name only" do
|
55
|
+
get 'action_with_partial'
|
56
|
+
response.should render_template("_partial")
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should allow specifying a partial with should_receive(:render)" do
|
60
|
+
controller.should_receive(:render).with(:partial => "controller_spec/partial")
|
61
|
+
get 'action_with_partial'
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should allow specifying a partial with should_receive(:render) with object" do
|
65
|
+
controller.should_receive(:render).with(:partial => "controller_spec/partial", :object => "something")
|
66
|
+
get 'action_with_partial_with_object', :thing => "something"
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should allow specifying a partial with should_receive(:render) with locals" do
|
70
|
+
controller.should_receive(:render).with(:partial => "controller_spec/partial", :locals => {:thing => "something"})
|
71
|
+
get 'action_with_partial_with_locals', :thing => "something"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should yield to render :update" do
|
75
|
+
template = stub("template")
|
76
|
+
controller.should_receive(:render).with(:update).and_yield(template)
|
77
|
+
template.should_receive(:replace).with(:bottom, "replace_me", :partial => "non_existent_partial")
|
78
|
+
get 'action_with_render_update'
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should allow a path relative to RAILS_ROOT/app/views/ when specifying a partial" do
|
82
|
+
get 'action_with_partial'
|
83
|
+
response.should render_template("controller_spec/_partial")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should provide access to flash" do
|
87
|
+
get 'action_which_sets_flash'
|
88
|
+
flash[:flash_key].should == "flash value"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should provide access to flash values set after a session reset" do
|
92
|
+
get 'action_setting_flash_after_session_reset'
|
93
|
+
flash[:after_reset].should == "available"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should not provide access to flash values set before a session reset" do
|
97
|
+
get 'action_setting_flash_before_session_reset'
|
98
|
+
flash[:before_reset].should_not == "available"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should provide access to session" do
|
102
|
+
session[:session_key] = "session value"
|
103
|
+
lambda do
|
104
|
+
get 'action_which_gets_session', :expected => "session value"
|
105
|
+
end.should_not raise_error
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "handling should_receive(:render)" do
|
109
|
+
it "should warn" do
|
110
|
+
controller.should_receive(:render).with(:template => "controller_spec/action_with_template")
|
111
|
+
get :action_with_template
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "handling should_not_receive(:render)" do
|
116
|
+
it "should warn" do
|
117
|
+
controller.should_not_receive(:render).with(:template => "the/wrong/template")
|
118
|
+
get :action_with_template
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "setting cookies in the request" do
|
123
|
+
|
124
|
+
it "should support a String key" do
|
125
|
+
cookies['cookie_key'] = 'cookie value'
|
126
|
+
get 'action_which_gets_cookie', :expected => "cookie value"
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should support a Symbol key" do
|
130
|
+
cookies[:cookie_key] = 'cookie value'
|
131
|
+
get 'action_which_gets_cookie', :expected => "cookie value"
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should support a Hash value" do
|
135
|
+
cookies[:cookie_key] = {'value' => 'cookie value', 'path' => '/not/default'}
|
136
|
+
get 'action_which_gets_cookie', :expected => {'value' => 'cookie value', 'path' => '/not/default'}
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "reading cookies from the response" do
|
142
|
+
|
143
|
+
it "should support a Symbol key" do
|
144
|
+
get 'action_which_sets_cookie', :value => "cookie value"
|
145
|
+
if Rails::VERSION::STRING >= "2.3"
|
146
|
+
cookies[:cookie_key].should == "cookie+value"
|
147
|
+
else
|
148
|
+
cookies[:cookie_key].should == ["cookie value"]
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should support a String key" do
|
153
|
+
get 'action_which_sets_cookie', :value => "cookie value"
|
154
|
+
if Rails::VERSION::STRING >= "2.3"
|
155
|
+
cookies['cookie_key'].should == "cookie+value"
|
156
|
+
else
|
157
|
+
cookies['cookie_key'].should == ["cookie value"]
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should expose instance vars through the assigns hash" do
|
164
|
+
get 'action_setting_the_assigns_hash'
|
165
|
+
assigns[:indirect_assigns_key].should == :indirect_assigns_key_value
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should expose instance vars through the assigns hash that are set to false" do
|
169
|
+
get 'action_that_assigns_false_to_a_variable'
|
170
|
+
assigns[:a_variable].should be_false
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should NOT complain when calling should_receive with arguments other than :render" do
|
174
|
+
controller.should_receive(:anything_besides_render)
|
175
|
+
lambda {
|
176
|
+
controller.rspec_verify
|
177
|
+
}.should raise_error(Exception, /expected :anything_besides_render/)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should not run a skipped before_filter" do
|
181
|
+
lambda {
|
182
|
+
get 'action_with_skipped_before_filter'
|
183
|
+
}.should_not raise_error
|
184
|
+
end
|
185
|
+
|
186
|
+
describe "extending #render on a controller" do
|
187
|
+
it "supports two arguments (as with rails 2.2)" do
|
188
|
+
get 'action_with_two_arg_render'
|
189
|
+
response.body.should =~ /new Effect\.Highlight/
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe "Given a controller spec for RedirectSpecController running in #{mode} mode", :type => :controller do
|
195
|
+
controller_name :redirect_spec
|
196
|
+
integrate_views if mode == 'integration'
|
197
|
+
|
198
|
+
it "a redirect should ignore the absence of a template" do
|
199
|
+
get 'action_with_redirect_to_somewhere'
|
200
|
+
response.should be_redirect
|
201
|
+
response.redirect_url.should == "http://test.host/redirect_spec/somewhere"
|
202
|
+
response.should redirect_to("http://test.host/redirect_spec/somewhere")
|
203
|
+
end
|
204
|
+
|
205
|
+
it "a call to response.should redirect_to should fail if no redirect" do
|
206
|
+
get 'action_with_no_redirect'
|
207
|
+
lambda {
|
208
|
+
response.redirect?.should be_true
|
209
|
+
}.should fail
|
210
|
+
lambda {
|
211
|
+
response.should redirect_to("http://test.host/redirect_spec/somewhere")
|
212
|
+
}.should fail_with("expected redirect to \"http://test.host/redirect_spec/somewhere\", got no redirect")
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
describe "Given a controller spec running in #{mode} mode" do
|
217
|
+
example_group = describe "A controller spec"
|
218
|
+
# , :type => :controller do
|
219
|
+
# integrate_views if mode == 'integration'
|
220
|
+
it "a spec in a context without controller_name set should fail with a useful warning" do
|
221
|
+
pending("need a new way to deal with examples that should_raise")
|
222
|
+
# ,
|
223
|
+
# :should_raise => [
|
224
|
+
# Spec::Expectations::ExpectationNotMetError,
|
225
|
+
# /You have to declare the controller name in controller specs/
|
226
|
+
# ] do
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
['integration', 'isolation'].each do |mode|
|
233
|
+
describe "A controller example running in #{mode} mode", :type => :controller do
|
234
|
+
controller_name :controller_inheriting_from_application_controller
|
235
|
+
integrate_views if mode == 'integration'
|
236
|
+
|
237
|
+
it "should only have a before filter inherited from ApplicationController run once..." do
|
238
|
+
controller.should_receive(:i_should_only_be_run_once).once
|
239
|
+
get :action_with_inherited_before_filter
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
describe ControllerSpecController, :type => :controller do
|
245
|
+
it "should use the controller passed to #describe" do
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
describe "A controller spec with controller_name set", :type => :controller do
|
250
|
+
controller_name :controller_spec
|
251
|
+
|
252
|
+
describe "nested" do
|
253
|
+
it "should inherit the controller name" do
|
254
|
+
get 'action_with_template'
|
255
|
+
response.should be_success
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
module Spec
|
261
|
+
module Rails
|
262
|
+
module Example
|
263
|
+
describe ControllerExampleGroup do
|
264
|
+
it "should clear its name from the description" do
|
265
|
+
group = describe("foo", :type => :controller) do
|
266
|
+
$nested_group = describe("bar") do
|
267
|
+
end
|
268
|
+
end
|
269
|
+
group.description.to_s.should == "foo"
|
270
|
+
$nested_group.description.to_s.should == "foo bar"
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
require 'controller_spec_controller'
|
3
|
+
|
4
|
+
describe "a controller spec running in isolation mode", :type => :controller do
|
5
|
+
controller_name :controller_spec
|
6
|
+
|
7
|
+
it "should not care if the template doesn't exist" do
|
8
|
+
get 'some_action'
|
9
|
+
response.should be_success
|
10
|
+
response.should render_template("template/that/does/not/actually/exist")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should not care if the template has errors" do
|
14
|
+
get 'action_with_errors_in_template'
|
15
|
+
response.should be_success
|
16
|
+
response.should render_template("action_with_errors_in_template")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "a controller spec running in integration mode", :type => :controller do
|
21
|
+
controller_name :controller_spec
|
22
|
+
integrate_views
|
23
|
+
|
24
|
+
it "should render a template" do
|
25
|
+
get 'action_with_template'
|
26
|
+
response.should be_success
|
27
|
+
response.should have_tag('div', 'This is action_with_template.rhtml')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should choke if the template doesn't exist" do
|
31
|
+
error = defined?(ActionController::MissingTemplate) ? ActionController::MissingTemplate : ActionView::MissingTemplate
|
32
|
+
lambda { get 'some_action' }.should raise_error(error)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should choke if the template has errors" do
|
36
|
+
lambda { get 'action_with_errors_in_template' }.should raise_error(ActionView::TemplateError)
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "nested" do
|
40
|
+
it "should render a template" do
|
41
|
+
get 'action_with_template'
|
42
|
+
response.should be_success
|
43
|
+
response.should have_tag('div', 'This is action_with_template.rhtml')
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "with integrate_views turned off" do
|
47
|
+
integrate_views false
|
48
|
+
|
49
|
+
it "should not care if the template doesn't exist" do
|
50
|
+
get 'some_action'
|
51
|
+
response.should be_success
|
52
|
+
response.should render_template("template/that/does/not/actually/exist")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
class CookiesProxyExamplesController < ActionController::Base
|
4
|
+
def index
|
5
|
+
cookies[:key] = cookies[:key]
|
6
|
+
render :text => ""
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module Spec
|
11
|
+
module Rails
|
12
|
+
module Example
|
13
|
+
describe CookiesProxy, :type => :controller do
|
14
|
+
controller_name :cookies_proxy_examples
|
15
|
+
|
16
|
+
describe "with a String key" do
|
17
|
+
|
18
|
+
it "should accept a String value" do
|
19
|
+
proxy = CookiesProxy.new(self)
|
20
|
+
proxy['key'] = 'value'
|
21
|
+
get :index
|
22
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
23
|
+
proxy['key'].should == 'value'
|
24
|
+
else
|
25
|
+
proxy['key'].should == ['value']
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should accept a Hash value" do
|
30
|
+
proxy = CookiesProxy.new(self)
|
31
|
+
proxy['key'] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
|
32
|
+
get :index
|
33
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
34
|
+
proxy['key'].should == 'value'
|
35
|
+
else
|
36
|
+
proxy['key'].should == ['value']
|
37
|
+
proxy['key'].value.should == ['value']
|
38
|
+
proxy['key'].expires.should == expiration
|
39
|
+
proxy['key'].path.should == path
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "with a Symbol key" do
|
46
|
+
|
47
|
+
it "should accept a String value" do
|
48
|
+
proxy = CookiesProxy.new(self)
|
49
|
+
proxy[:key] = 'value'
|
50
|
+
get :index
|
51
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
52
|
+
proxy[:key].should == 'value'
|
53
|
+
else
|
54
|
+
proxy[:key].should == ['value']
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should accept a Hash value" do
|
59
|
+
proxy = CookiesProxy.new(self)
|
60
|
+
proxy[:key] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
|
61
|
+
get :index
|
62
|
+
if ::Rails::VERSION::STRING >= "2.3"
|
63
|
+
proxy[:key].should == 'value'
|
64
|
+
else
|
65
|
+
proxy[:key].should == ['value']
|
66
|
+
proxy[:key].value.should == ['value']
|
67
|
+
proxy[:key].expires.should == expiration
|
68
|
+
proxy[:key].path.should == path
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#delete" do
|
75
|
+
it "should delete from the response cookies" do
|
76
|
+
proxy = CookiesProxy.new(self)
|
77
|
+
response_cookies = mock('cookies')
|
78
|
+
response.should_receive(:cookies).and_return(response_cookies)
|
79
|
+
response_cookies.should_receive(:delete).with('key')
|
80
|
+
proxy.delete :key
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|