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.
Files changed (164) hide show
  1. data/History.txt +174 -0
  2. data/License.txt +33 -0
  3. data/Manifest.txt +164 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +63 -0
  6. data/TODO.txt +1 -0
  7. data/Upgrade.markdown +52 -0
  8. data/features/step_definitions/people.rb +6 -0
  9. data/features/support/env.rb +13 -0
  10. data/features/transactions/transactions_should_rollback.feature +16 -0
  11. data/generators/rspec/CHANGES +1 -0
  12. data/generators/rspec/rspec_generator.rb +37 -0
  13. data/generators/rspec/templates/previous_failures.txt +0 -0
  14. data/generators/rspec/templates/rcov.opts +2 -0
  15. data/generators/rspec/templates/rspec.rake +177 -0
  16. data/generators/rspec/templates/script/autospec +5 -0
  17. data/generators/rspec/templates/script/spec +4 -0
  18. data/generators/rspec/templates/script/spec_server +37 -0
  19. data/generators/rspec/templates/spec.opts +4 -0
  20. data/generators/rspec/templates/spec_helper.rb +47 -0
  21. data/generators/rspec_controller/USAGE +33 -0
  22. data/generators/rspec_controller/rspec_controller_generator.rb +45 -0
  23. data/generators/rspec_controller/templates/controller_spec.rb +25 -0
  24. data/generators/rspec_controller/templates/helper_spec.rb +11 -0
  25. data/generators/rspec_controller/templates/view_spec.rb +12 -0
  26. data/generators/rspec_default_values.rb +19 -0
  27. data/generators/rspec_model/USAGE +18 -0
  28. data/generators/rspec_model/rspec_model_generator.rb +35 -0
  29. data/generators/rspec_model/templates/model_spec.rb +15 -0
  30. data/generators/rspec_scaffold/rspec_scaffold_generator.rb +150 -0
  31. data/generators/rspec_scaffold/templates/controller_spec.rb +171 -0
  32. data/generators/rspec_scaffold/templates/edit_erb_spec.rb +27 -0
  33. data/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
  34. data/generators/rspec_scaffold/templates/index_erb_spec.rb +28 -0
  35. data/generators/rspec_scaffold/templates/new_erb_spec.rb +27 -0
  36. data/generators/rspec_scaffold/templates/routing_spec.rb +63 -0
  37. data/generators/rspec_scaffold/templates/show_erb_spec.rb +23 -0
  38. data/init.rb +9 -0
  39. data/lib/autotest/discover.rb +1 -0
  40. data/lib/autotest/rails_rspec.rb +76 -0
  41. data/lib/spec/rails.rb +37 -0
  42. data/lib/spec/rails/example.rb +53 -0
  43. data/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
  44. data/lib/spec/rails/example/controller_example_group.rb +242 -0
  45. data/lib/spec/rails/example/cookies_proxy.rb +29 -0
  46. data/lib/spec/rails/example/functional_example_group.rb +84 -0
  47. data/lib/spec/rails/example/helper_example_group.rb +167 -0
  48. data/lib/spec/rails/example/model_example_group.rb +14 -0
  49. data/lib/spec/rails/example/render_observer.rb +67 -0
  50. data/lib/spec/rails/example/routing_helpers.rb +68 -0
  51. data/lib/spec/rails/example/view_example_group.rb +186 -0
  52. data/lib/spec/rails/extensions.rb +15 -0
  53. data/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
  54. data/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
  55. data/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
  56. data/lib/spec/rails/extensions/action_view/base.rb +33 -0
  57. data/lib/spec/rails/extensions/active_record/base.rb +43 -0
  58. data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
  59. data/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
  60. data/lib/spec/rails/extensions/spec/runner/configuration.rb +48 -0
  61. data/lib/spec/rails/interop/testcase.rb +14 -0
  62. data/lib/spec/rails/matchers.rb +40 -0
  63. data/lib/spec/rails/matchers/ar_be_valid.rb +44 -0
  64. data/lib/spec/rails/matchers/assert_select.rb +131 -0
  65. data/lib/spec/rails/matchers/change.rb +11 -0
  66. data/lib/spec/rails/matchers/have_text.rb +57 -0
  67. data/lib/spec/rails/matchers/include_text.rb +54 -0
  68. data/lib/spec/rails/matchers/redirect_to.rb +126 -0
  69. data/lib/spec/rails/matchers/render_template.rb +114 -0
  70. data/lib/spec/rails/mocks.rb +135 -0
  71. data/lib/spec/rails/spec_server.rb +97 -0
  72. data/lib/spec/rails/story_adapter.rb +79 -0
  73. data/lib/spec/rails/version.rb +16 -0
  74. data/rspec-rails.gemspec +39 -0
  75. data/spec/autotest/mappings_spec.rb +36 -0
  76. data/spec/rails_suite.rb +7 -0
  77. data/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
  78. data/spec/resources/controllers/application.rb +9 -0
  79. data/spec/resources/controllers/controller_spec_controller.rb +116 -0
  80. data/spec/resources/controllers/redirect_spec_controller.rb +70 -0
  81. data/spec/resources/controllers/render_spec_controller.rb +30 -0
  82. data/spec/resources/controllers/rjs_spec_controller.rb +58 -0
  83. data/spec/resources/helpers/addition_helper.rb +5 -0
  84. data/spec/resources/helpers/explicit_helper.rb +46 -0
  85. data/spec/resources/helpers/more_explicit_helper.rb +5 -0
  86. data/spec/resources/helpers/plugin_application_helper.rb +6 -0
  87. data/spec/resources/helpers/view_spec_helper.rb +13 -0
  88. data/spec/resources/models/animal.rb +4 -0
  89. data/spec/resources/models/person.rb +18 -0
  90. data/spec/resources/models/thing.rb +3 -0
  91. data/spec/resources/views/controller_spec/_partial.rhtml +0 -0
  92. data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
  93. data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
  94. data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
  95. data/spec/resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
  96. data/spec/resources/views/controller_spec/action_with_template.rhtml +1 -0
  97. data/spec/resources/views/layouts/application.rhtml +0 -0
  98. data/spec/resources/views/layouts/simple.rhtml +0 -0
  99. data/spec/resources/views/objects/_object.html.erb +1 -0
  100. data/spec/resources/views/render_spec/_a_partial.rhtml +0 -0
  101. data/spec/resources/views/render_spec/action_with_alternate_layout.rhtml +0 -0
  102. data/spec/resources/views/render_spec/some_action.html.erb +0 -0
  103. data/spec/resources/views/render_spec/some_action.js.rjs +1 -0
  104. data/spec/resources/views/render_spec/some_action.rjs +1 -0
  105. data/spec/resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
  106. data/spec/resources/views/rjs_spec/hide_div.rjs +1 -0
  107. data/spec/resources/views/rjs_spec/hide_page_element.rjs +1 -0
  108. data/spec/resources/views/rjs_spec/insert_html.rjs +1 -0
  109. data/spec/resources/views/rjs_spec/replace.rjs +1 -0
  110. data/spec/resources/views/rjs_spec/replace_html.rjs +1 -0
  111. data/spec/resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
  112. data/spec/resources/views/rjs_spec/visual_effect.rjs +1 -0
  113. data/spec/resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
  114. data/spec/resources/views/tag_spec/no_tags.rhtml +1 -0
  115. data/spec/resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
  116. data/spec/resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
  117. data/spec/resources/views/view_spec/_partial.rhtml +2 -0
  118. data/spec/resources/views/view_spec/_partial_used_twice.rhtml +0 -0
  119. data/spec/resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
  120. data/spec/resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
  121. data/spec/resources/views/view_spec/_spacer.rhtml +1 -0
  122. data/spec/resources/views/view_spec/accessor.rhtml +5 -0
  123. data/spec/resources/views/view_spec/block_helper.rhtml +3 -0
  124. data/spec/resources/views/view_spec/entry_form.rhtml +2 -0
  125. data/spec/resources/views/view_spec/explicit_helper.rhtml +2 -0
  126. data/spec/resources/views/view_spec/foo/show.rhtml +1 -0
  127. data/spec/resources/views/view_spec/implicit_helper.rhtml +2 -0
  128. data/spec/resources/views/view_spec/multiple_helpers.rhtml +3 -0
  129. data/spec/resources/views/view_spec/path_params.html.erb +1 -0
  130. data/spec/resources/views/view_spec/should_not_receive.rhtml +3 -0
  131. data/spec/resources/views/view_spec/template_with_partial.rhtml +5 -0
  132. data/spec/resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
  133. data/spec/resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
  134. data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
  135. data/spec/spec/rails/example/configuration_spec.rb +65 -0
  136. data/spec/spec/rails/example/controller_example_group_spec.rb +275 -0
  137. data/spec/spec/rails/example/controller_isolation_spec.rb +56 -0
  138. data/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
  139. data/spec/spec/rails/example/error_handling_spec.rb +90 -0
  140. data/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
  141. data/spec/spec/rails/example/helper_example_group_spec.rb +206 -0
  142. data/spec/spec/rails/example/model_example_group_spec.rb +20 -0
  143. data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
  144. data/spec/spec/rails/example/view_example_group_spec.rb +335 -0
  145. data/spec/spec/rails/extensions/action_view_base_spec.rb +48 -0
  146. data/spec/spec/rails/extensions/active_record_spec.rb +14 -0
  147. data/spec/spec/rails/interop/testcase_spec.rb +70 -0
  148. data/spec/spec/rails/matchers/ar_be_valid_spec.rb +45 -0
  149. data/spec/spec/rails/matchers/assert_select_spec.rb +811 -0
  150. data/spec/spec/rails/matchers/errors_on_spec.rb +25 -0
  151. data/spec/spec/rails/matchers/have_text_spec.rb +70 -0
  152. data/spec/spec/rails/matchers/include_text_spec.rb +62 -0
  153. data/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
  154. data/spec/spec/rails/matchers/render_template_spec.rb +183 -0
  155. data/spec/spec/rails/matchers/should_change_spec.rb +15 -0
  156. data/spec/spec/rails/mocks/ar_classes.rb +10 -0
  157. data/spec/spec/rails/mocks/mock_model_spec.rb +106 -0
  158. data/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
  159. data/spec/spec/rails/sample_modified_fixture.rb +8 -0
  160. data/spec/spec/rails/sample_spec.rb +8 -0
  161. data/spec/spec/rails/spec_server_spec.rb +107 -0
  162. data/spec/spec/rails/spec_spec.rb +11 -0
  163. data/spec/spec_helper.rb +78 -0
  164. 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