rspec-rails 1.3.4 → 2.0.0.a2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. data/.gitignore +1 -7
  2. data/README.markdown +58 -0
  3. data/Rakefile +51 -9
  4. data/example_app_template.rb +33 -0
  5. data/lib/generators/rspec.rb +25 -0
  6. data/lib/generators/rspec/controller/controller_generator.rb +26 -0
  7. data/lib/generators/rspec/controller/templates/controller_spec.rb +15 -0
  8. data/lib/generators/rspec/controller/templates/view_spec.rb +12 -0
  9. data/lib/generators/rspec/helper/helper_generator.rb +11 -0
  10. data/lib/generators/rspec/helper/templates/helper_spec.rb +14 -0
  11. data/lib/generators/rspec/install/install_generator.rb +29 -0
  12. data/lib/generators/rspec/install/templates/lib/tasks/rspec.rake +119 -0
  13. data/lib/generators/rspec/install/templates/script/rspec.tt +4 -0
  14. data/{generators/rspec/templates → lib/generators/rspec/install/templates/spec}/rcov.opts +0 -0
  15. data/{generators/rspec/templates → lib/generators/rspec/install/templates/spec}/spec.opts +0 -0
  16. data/{generators/rspec/templates → lib/generators/rspec/install/templates/spec}/spec_helper.rb +14 -12
  17. data/lib/generators/rspec/integration/integration_generator.rb +12 -0
  18. data/{generators/integration_spec/templates/integration_spec.rb → lib/generators/rspec/integration/templates/request_spec.rb} +0 -0
  19. data/lib/generators/rspec/mailer/mailer_generator.rb +21 -0
  20. data/lib/generators/rspec/mailer/templates/fixture +3 -0
  21. data/lib/generators/rspec/mailer/templates/mailer_spec.rb +14 -0
  22. data/lib/generators/rspec/model/model_generator.rb +22 -0
  23. data/lib/generators/rspec/model/templates/fixtures.yml +19 -0
  24. data/{generators/rspec_model → lib/generators/rspec/model}/templates/model_spec.rb +1 -1
  25. data/lib/generators/rspec/observer/observer_generator.rb +12 -0
  26. data/lib/generators/rspec/observer/templates/observer_spec.rb +5 -0
  27. data/lib/generators/rspec/plugin/plugin_generator.rb +11 -0
  28. data/lib/generators/rspec/plugin/templates/%file_name%_spec.rb.tt +5 -0
  29. data/lib/generators/rspec/plugin/templates/test_helper.rb +5 -0
  30. data/lib/generators/rspec/scaffold/scaffold_generator.rb +112 -0
  31. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +127 -0
  32. data/{generators/rspec_scaffold/templates/edit_erb_spec.rb → lib/generators/rspec/scaffold/templates/edit_spec.rb} +3 -3
  33. data/{generators/rspec_scaffold/templates/index_erb_spec.rb → lib/generators/rspec/scaffold/templates/index_spec.rb} +4 -4
  34. data/{generators/rspec_scaffold/templates/new_erb_spec.rb → lib/generators/rspec/scaffold/templates/new_spec.rb} +3 -3
  35. data/{generators/rspec_scaffold → lib/generators/rspec/scaffold}/templates/routing_spec.rb +4 -0
  36. data/{generators/rspec_scaffold/templates/show_erb_spec.rb → lib/generators/rspec/scaffold/templates/show_spec.rb} +4 -4
  37. data/lib/rspec/rails.rb +2 -0
  38. data/lib/rspec/rails/example.rb +2 -0
  39. data/lib/rspec/rails/example/controller_example_group.rb +31 -0
  40. data/lib/rspec/rails/example/request_example_group.rb +26 -0
  41. data/lib/rspec/rails/matchers.rb +14 -0
  42. data/lib/rspec/rails/transactional_database_support.rb +38 -0
  43. data/lib/rspec/rails/version.rb +16 -0
  44. data/rspec-rails.gemspec +78 -18
  45. metadata +97 -321
  46. data/.document +0 -7
  47. data/Contribute.rdoc +0 -4
  48. data/Gemfile +0 -4
  49. data/Gemfile.lock +0 -27
  50. data/History.rdoc +0 -321
  51. data/License.txt +0 -33
  52. data/Manifest.txt +0 -165
  53. data/README.rdoc +0 -48
  54. data/TODO.txt +0 -17
  55. data/Upgrade.rdoc +0 -148
  56. data/generators/integration_spec/integration_spec_generator.rb +0 -10
  57. data/generators/rspec/CHANGES +0 -1
  58. data/generators/rspec/rspec_generator.rb +0 -72
  59. data/generators/rspec/templates/previous_failures.txt +0 -0
  60. data/generators/rspec/templates/rspec.rake +0 -144
  61. data/generators/rspec/templates/script/autospec +0 -6
  62. data/generators/rspec/templates/script/spec +0 -10
  63. data/generators/rspec_controller/USAGE +0 -33
  64. data/generators/rspec_controller/rspec_controller_generator.rb +0 -47
  65. data/generators/rspec_controller/templates/controller_spec.rb +0 -25
  66. data/generators/rspec_controller/templates/helper_spec.rb +0 -11
  67. data/generators/rspec_controller/templates/view_spec.rb +0 -12
  68. data/generators/rspec_default_values.rb +0 -28
  69. data/generators/rspec_model/USAGE +0 -18
  70. data/generators/rspec_model/rspec_model_generator.rb +0 -35
  71. data/generators/rspec_scaffold/rspec_scaffold_generator.rb +0 -154
  72. data/generators/rspec_scaffold/templates/controller_spec.rb +0 -131
  73. data/generators/rspec_scaffold/templates/helper_spec.rb +0 -11
  74. data/init.rb +0 -9
  75. data/lib/autotest/discover.rb +0 -5
  76. data/lib/autotest/rails_rspec.rb +0 -76
  77. data/lib/spec/rails.rb +0 -26
  78. data/lib/spec/rails/example.rb +0 -48
  79. data/lib/spec/rails/example/assigns_hash_proxy.rb +0 -39
  80. data/lib/spec/rails/example/controller_example_group.rb +0 -285
  81. data/lib/spec/rails/example/cookies_proxy.rb +0 -29
  82. data/lib/spec/rails/example/functional_example_group.rb +0 -106
  83. data/lib/spec/rails/example/helper_example_group.rb +0 -153
  84. data/lib/spec/rails/example/integration_example_group.rb +0 -16
  85. data/lib/spec/rails/example/model_example_group.rb +0 -15
  86. data/lib/spec/rails/example/render_observer.rb +0 -80
  87. data/lib/spec/rails/example/routing_example_group.rb +0 -16
  88. data/lib/spec/rails/example/routing_helpers.rb +0 -66
  89. data/lib/spec/rails/example/view_example_group.rb +0 -203
  90. data/lib/spec/rails/extensions.rb +0 -11
  91. data/lib/spec/rails/extensions/action_controller/rescue.rb +0 -42
  92. data/lib/spec/rails/extensions/action_controller/test_case.rb +0 -16
  93. data/lib/spec/rails/extensions/action_controller/test_response.rb +0 -21
  94. data/lib/spec/rails/extensions/action_view/base.rb +0 -35
  95. data/lib/spec/rails/extensions/active_record/base.rb +0 -45
  96. data/lib/spec/rails/extensions/active_support/test_case.rb +0 -7
  97. data/lib/spec/rails/extensions/spec/matchers/have.rb +0 -23
  98. data/lib/spec/rails/extensions/spec/runner/configuration.rb +0 -45
  99. data/lib/spec/rails/interop/testcase.rb +0 -14
  100. data/lib/spec/rails/matchers.rb +0 -32
  101. data/lib/spec/rails/matchers/ar_be_valid.rb +0 -27
  102. data/lib/spec/rails/matchers/assert_select.rb +0 -180
  103. data/lib/spec/rails/matchers/change.rb +0 -13
  104. data/lib/spec/rails/matchers/have_text.rb +0 -57
  105. data/lib/spec/rails/matchers/include_text.rb +0 -54
  106. data/lib/spec/rails/matchers/redirect_to.rb +0 -126
  107. data/lib/spec/rails/matchers/render_template.rb +0 -129
  108. data/lib/spec/rails/matchers/route_to.rb +0 -149
  109. data/lib/spec/rails/mocks.rb +0 -140
  110. data/lib/spec/rails/version.rb +0 -16
  111. data/spec/autotest/mappings_spec.rb +0 -86
  112. data/spec/rails_suite.rb +0 -7
  113. data/spec/resources/controllers/action_view_base_spec_controller.rb +0 -2
  114. data/spec/resources/controllers/application.rb +0 -9
  115. data/spec/resources/controllers/controller_spec_controller.rb +0 -127
  116. data/spec/resources/controllers/example.txt +0 -1
  117. data/spec/resources/controllers/redirect_spec_controller.rb +0 -70
  118. data/spec/resources/controllers/render_spec_controller.rb +0 -34
  119. data/spec/resources/controllers/rjs_spec_controller.rb +0 -58
  120. data/spec/resources/helpers/addition_helper.rb +0 -5
  121. data/spec/resources/helpers/explicit_helper.rb +0 -46
  122. data/spec/resources/helpers/more_explicit_helper.rb +0 -5
  123. data/spec/resources/helpers/plugin_application_helper.rb +0 -6
  124. data/spec/resources/helpers/view_spec_helper.rb +0 -13
  125. data/spec/resources/models/animal.rb +0 -4
  126. data/spec/resources/models/person.rb +0 -18
  127. data/spec/resources/models/thing.rb +0 -3
  128. data/spec/resources/views/controller_spec/_partial.html.erb +0 -0
  129. data/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb +0 -1
  130. data/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb +0 -1
  131. data/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb +0 -0
  132. data/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb +0 -1
  133. data/spec/resources/views/controller_spec/action_with_template.html.erb +0 -1
  134. data/spec/resources/views/controller_spec/non_existent_action_with_existent_template.html.erb +0 -1
  135. data/spec/resources/views/layouts/application.html.erb +0 -0
  136. data/spec/resources/views/layouts/simple.html.erb +0 -0
  137. data/spec/resources/views/objects/_object.html.erb +0 -1
  138. data/spec/resources/views/render_spec/_a_partial.html.erb +0 -0
  139. data/spec/resources/views/render_spec/action_with_alternate_layout.html.erb +0 -0
  140. data/spec/resources/views/render_spec/some_action.html.erb +0 -0
  141. data/spec/resources/views/render_spec/some_action.js.rjs +0 -1
  142. data/spec/resources/views/rjs_spec/_replacement_partial.html.erb +0 -1
  143. data/spec/resources/views/rjs_spec/hide_div.js.rjs +0 -1
  144. data/spec/resources/views/rjs_spec/hide_page_element.js.rjs +0 -1
  145. data/spec/resources/views/rjs_spec/insert_html.js.rjs +0 -1
  146. data/spec/resources/views/rjs_spec/replace.js.rjs +0 -1
  147. data/spec/resources/views/rjs_spec/replace_html.js.rjs +0 -1
  148. data/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs +0 -1
  149. data/spec/resources/views/rjs_spec/visual_effect.js.rjs +0 -1
  150. data/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs +0 -1
  151. data/spec/resources/views/tag_spec/no_tags.html.erb +0 -1
  152. data/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb +0 -1
  153. data/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb +0 -1
  154. data/spec/resources/views/view_spec/_partial.html.erb +0 -2
  155. data/spec/resources/views/view_spec/_partial_used_twice.html.erb +0 -0
  156. data/spec/resources/views/view_spec/_partial_with_local_variable.html.erb +0 -1
  157. data/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb +0 -1
  158. data/spec/resources/views/view_spec/_spacer.html.erb +0 -1
  159. data/spec/resources/views/view_spec/accessor.html.erb +0 -6
  160. data/spec/resources/views/view_spec/block_helper.html.erb +0 -3
  161. data/spec/resources/views/view_spec/entry_form.html.erb +0 -2
  162. data/spec/resources/views/view_spec/explicit_helper.html.erb +0 -2
  163. data/spec/resources/views/view_spec/foo/show.html.erb +0 -1
  164. data/spec/resources/views/view_spec/implicit_helper.html.erb +0 -2
  165. data/spec/resources/views/view_spec/multiple_helpers.html.erb +0 -3
  166. data/spec/resources/views/view_spec/path_params.html.erb +0 -1
  167. data/spec/resources/views/view_spec/should_not_receive.html.erb +0 -3
  168. data/spec/resources/views/view_spec/template_with_partial.html.erb +0 -5
  169. data/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb +0 -3
  170. data/spec/resources/views/view_spec/template_with_partial_with_array.html.erb +0 -1
  171. data/spec/resources/views/view_spec/view_helpers.html.erb +0 -1
  172. data/spec/spec/rails/example/assigns_hash_proxy_spec.rb +0 -109
  173. data/spec/spec/rails/example/configuration_spec.rb +0 -67
  174. data/spec/spec/rails/example/controller_example_group_spec.rb +0 -307
  175. data/spec/spec/rails/example/controller_isolation_spec.rb +0 -75
  176. data/spec/spec/rails/example/cookies_proxy_spec.rb +0 -87
  177. data/spec/spec/rails/example/error_handling_spec.rb +0 -90
  178. data/spec/spec/rails/example/example_group_factory_spec.rb +0 -112
  179. data/spec/spec/rails/example/helper_example_group_spec.rb +0 -247
  180. data/spec/spec/rails/example/model_example_group_spec.rb +0 -32
  181. data/spec/spec/rails/example/routing_example_group_spec.rb +0 -9
  182. data/spec/spec/rails/example/shared_routing_example_group_examples.rb +0 -237
  183. data/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +0 -33
  184. data/spec/spec/rails/example/view_example_group_spec.rb +0 -346
  185. data/spec/spec/rails/extensions/action_view_base_spec.rb +0 -79
  186. data/spec/spec/rails/extensions/active_record_spec.rb +0 -14
  187. data/spec/spec/rails/interop/testcase_spec.rb +0 -70
  188. data/spec/spec/rails/matchers/ar_be_valid_spec.rb +0 -19
  189. data/spec/spec/rails/matchers/assert_select_spec.rb +0 -835
  190. data/spec/spec/rails/matchers/errors_on_spec.rb +0 -37
  191. data/spec/spec/rails/matchers/have_text_spec.rb +0 -69
  192. data/spec/spec/rails/matchers/include_text_spec.rb +0 -62
  193. data/spec/spec/rails/matchers/redirect_to_spec.rb +0 -253
  194. data/spec/spec/rails/matchers/render_template_spec.rb +0 -208
  195. data/spec/spec/rails/matchers/should_change_spec.rb +0 -15
  196. data/spec/spec/rails/mocks/ar_classes.rb +0 -10
  197. data/spec/spec/rails/mocks/mock_model_spec.rb +0 -112
  198. data/spec/spec/rails/mocks/stub_model_spec.rb +0 -80
  199. data/spec/spec/rails/sample_modified_fixture.rb +0 -8
  200. data/spec/spec/rails/sample_spec.rb +0 -8
  201. data/spec/spec/rails/spec_spec.rb +0 -11
  202. data/spec/spec_helper.rb +0 -78
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Rails
5
- module Example
6
- describe ModelExampleGroup do
7
- accesses_configured_helper_methods
8
-
9
- if defined?(ActiveRecord::TestCase)
10
- it "derives from ActiveRecord::TestCase" do
11
- group = describe("foo", :type => :model) do; end
12
- group.ancestors.should include(ActiveRecord::TestCase)
13
- end
14
- else
15
- it "derives from ActiveSupport::TestCase" do
16
- group = describe("foo", :type => :model) do; end
17
- group.ancestors.should include(ActiveSupport::TestCase)
18
- end
19
- end
20
-
21
- it "clears its name from the description" do
22
- group = describe("foo", :type => :model) do
23
- $nested_group = describe("bar") do
24
- end
25
- end
26
- group.description.to_s.should == "foo"
27
- $nested_group.description.to_s.should == "foo bar"
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'controller_spec_controller'
3
- require File.join(File.dirname(__FILE__), "/shared_routing_example_group_examples.rb")
4
-
5
- describe "Routing Examples", :type => :routing do
6
- it_should_behave_like "a routing example"
7
- it_should_behave_like "a be routable spec"
8
- it_should_behave_like "a route to spec"
9
- end
@@ -1,237 +0,0 @@
1
- class CustomRouteSpecController < ActionController::Base; end
2
- class RspecOnRailsSpecsController < ActionController::Base; end
3
-
4
- shared_examples_for "a routing example" do
5
- describe "using backward compatible route_for()" do
6
- it "translates GET-only paths to be explicit" do
7
- self.should_receive(:assert_routing).with(hash_including(:method => :get), anything, {}, anything)
8
- route_for(:controller => "controller_spec", :action => "some_action").
9
- should == "/controller_spec/some_action"
10
- end
11
-
12
- it "uses assert_routing to specify that the :controller and :action are involved" do
13
- @route = { :controller => "controller_spec", :action => "some_action" }
14
- self.should_receive(:assert_routing).with(anything, @route, {}, anything)
15
- route_for(@route).
16
- should == "/controller_spec/some_action"
17
- end
18
-
19
- it "passes extra args through to assert_routing" do
20
- @route = { :controller => "controller_spec", :action => "some_action" }
21
- self.should_receive(:assert_routing).with(anything, anything, {}, { :a => "1", :b => "2" } )
22
- route_for(@route).
23
- should == "/controller_spec/some_action?a=1&b=2"
24
- end
25
-
26
- it "passes with an existing route" do
27
- route_for(:controller => "controller_spec", :action => "some_action").
28
- should == "/controller_spec/some_action"
29
- end
30
-
31
- it "passes with an existing route with additional parameters" do
32
- route_for(:controller => "controller_spec", :action => "some_action", :param => '1').
33
- should == "/controller_spec/some_action?param=1"
34
- end
35
-
36
- it "recognizes routes with methods besides :get" do
37
- should_receive(:assert_routing).with(hash_including(:method => :put), anything, {}, anything)
38
-
39
- route_for(:controller => "rspec_on_rails_specs", :action => "update", :id => "37").
40
- should == {:path => "/rspec_on_rails_specs/37", :method => :put}
41
- end
42
-
43
- describe "failing due to bad path:" do
44
- it "raises routing error and suggests should_not be_routeable()" do
45
- lambda {
46
- route_for(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37") ==
47
- {:path => "/rspec_on_rails_specs/bad_route/37", :method => :put}
48
- }.should raise_error( ActionController::RoutingError, /suggest.*should_not be_routable/ )
49
- end
50
- end
51
-
52
- describe "failing due to params mismatch:" do
53
- it "re-raises assertion and suggests should_not be_routeable()" do
54
- lambda {
55
- route_for(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37") ==
56
- {:path => "/rspec_on_rails_specs/37", :method => :put}
57
- }.should raise_error( ::Test::Unit::AssertionFailedError, /suggest.*should_not be_routable/ )
58
- end
59
- end
60
-
61
- describe "failing due to wrong HTTP method" do
62
- it "raises method error and suggest should_not be_routable()" do
63
- lambda {
64
- route_for(:controller => "rspec_on_rails_specs", :action => "update", :id => "37").
65
- should == {:path => "/rspec_on_rails_specs/37", :method => :post}
66
- }.should raise_error(ActionController::MethodNotAllowed) { |error| error.should_not =~ /should_not be_routable/ }
67
- end
68
- end
69
-
70
- it "generates params for custom routes" do
71
- # redundant, deprecated
72
- params_from(:get, '/custom_route').
73
- should == {:controller => "custom_route_spec", :action => "custom_route"}
74
- end
75
-
76
- it "generates params for existing routes" do
77
- # redundant, deprecated
78
- params_from(:get, '/controller_spec/some_action').
79
- should == {:controller => "controller_spec", :action => "some_action"}
80
- end
81
-
82
- it "generates params for existing routes with a query parameters" do
83
- # redundant, deprecated
84
- params_from(:get, '/controller_spec/some_action?param=1').
85
- should == {:controller => "controller_spec", :action => "some_action", :param => '1'}
86
- end
87
-
88
- it "generates params for existing routes with multiple query parameters" do
89
- # redundant, deprecated
90
- params_from(:get, '/controller_spec/some_action?param1=1&param2=2').
91
- should == {:controller => "controller_spec", :action => "some_action", :param1 => '1', :param2 => '2' }
92
- end
93
- end
94
- end
95
-
96
- shared_examples_for "a be routable spec" do
97
- describe "using should_not be_routable()" do
98
- it "passes for a bad route" do
99
- { :put => "/rspec_on_rails_specs/bad_route/37" }.
100
- should_not be_routable
101
- end
102
- it "passes for a bad route having an arg" do
103
- { :put => "/rspec_on_rails_specs/bad_route/37?some_arg=1" }.
104
- should_not be_routable
105
- end
106
- describe "when assert_recognizes throws exceptions:" do
107
- [ ActionController::RoutingError, ActionController::MethodNotAllowed ].each do |e|
108
- it "passes on #{e}" do
109
- self.stub!( :assert_recognizes ).and_return { raise e, "stubbed exception" }
110
- { :get => "/rspec_on_rails_spec/bad_route/37" }.should_not be_routable
111
- end
112
- it "should be_routable on usual Test::Unit::AssertionFailedError" do
113
- # <{}> is predictable because of the way we call assert_recognizes during be_routable().
114
- self.stub!( :assert_recognizes ).and_return { raise ::Test::Unit::AssertionFailedError, "<{a}> did not match <{}>" }
115
- { :get => "/rspec_on_rails_spec/arguably_bad_route" }.should be_routable
116
- end
117
- it "should re-raise on unusual Test::Unit::AssertionFailedError" do
118
- self.stub!( :assert_recognizes ).and_return { raise ::Test::Unit::AssertionFailedError, "some other message" }
119
- expect { { :get => "/rspec_on_rails_spec/weird_case_route/" }.should be_routable }.
120
- to raise_error
121
- end
122
- end
123
- end
124
- it "test should be_routable" do
125
- { :get => "/custom_route" }.
126
- should be_routable
127
- end
128
-
129
- it "recommends route_to() on failure with should()" do
130
- lambda {
131
- { :get => "/nonexisting_route" }.
132
- should be_routable
133
- }.should raise_error( /route_to\(/)
134
- end
135
-
136
- it "shows actual route that was generated on failure with should_not()" do
137
- begin
138
- { :get => "/custom_route" }.should_not be_routable
139
- rescue Exception => e
140
- ensure
141
- # Different versions of ruby order these differently
142
- e.message.should =~ /"action"=>"custom_route"/
143
- e.message.should =~ /"controller"=>"custom_route_spec"/
144
- end
145
- end
146
-
147
- it "works with routeable (alternate spelling)" do
148
- { :put => "/nonexisting_route" }.
149
- should_not be_routeable
150
- end
151
- end
152
- end
153
-
154
- shared_examples_for "a route to spec" do
155
- describe "using should[_not] route_to()" do
156
- it "supports existing routes" do
157
- { :get => "/controller_spec/some_action" }.
158
- should route_to( :controller => "controller_spec", :action => "some_action" )
159
- end
160
-
161
- it "translates GET-only paths to be explicit, when matching against a string (for parity with route_for().should == '/path')" do
162
- self.should_receive(:assert_routing).with(hash_including(:method => :get), anything, {}, anything)
163
- "/controller_spec/some_action".
164
- should route_to({})
165
- end
166
-
167
- it "asserts, using assert_routing, that the :controller and :action are involved" do
168
- @route = { :controller => "controller_spec", :action => "some_action" }
169
- self.should_receive(:assert_routing).with(anything, @route, {}, anything)
170
- "/controller_spec/some_action".
171
- should route_to(@route)
172
- end
173
-
174
- it "sends extra args through" do
175
- @route = { :controller => "controller_spec", :action => "some_action" }
176
- self.should_receive(:assert_routing).with(anything, anything, {}, { :a => "1", :b => "2" } )
177
- "/controller_spec/some_action?a=1&b=2".
178
- should route_to( @route )
179
- end
180
-
181
- it "supports routes with additional parameters" do
182
- { :get => "/controller_spec/some_action?param=1" }.
183
- should route_to( :controller => "controller_spec", :action => "some_action", :param => '1' )
184
- end
185
-
186
- it "recognizes routes with methods besides :get" do
187
- self.should_receive(:assert_routing).with(hash_including(:method => :put), anything, {}, anything)
188
- { :put => "/rspec_on_rails_specs/37" }.
189
- should route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37")
190
- end
191
-
192
- it "allows only one key/value in the path - :method => path" do
193
- lambda {
194
- { :a => "b" ,:c => "d" }.
195
- should route_to("anything")
196
- }.should raise_error( ArgumentError, /usage/ )
197
- end
198
-
199
- describe "failing due to bad path" do
200
- it "raises routing error, and suggests should_not be_routeable()" do
201
- lambda {
202
- { :put => "/rspec_on_rails_specs/nonexistent/37" }.
203
- should route_to(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37")
204
- }.should raise_error( ActionController::RoutingError, /suggest.*nonexistent.*should_not be_routable/ )
205
- end
206
- end
207
-
208
- describe "failing due to params mismatch" do
209
- it "raises assertion, and suggests should_not be_routeable()" do
210
- lambda {
211
- { :put => "/rspec_on_rails_specs/37" }.
212
- should route_to(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37")
213
- }.should raise_error( ::Test::Unit::AssertionFailedError, /suggest.*rspec_on_rails_specs\/37.*should_not be_routable/ )
214
- end
215
- end
216
-
217
- describe "passing when expected failure" do
218
- it "suggests should_not be_routable()" do
219
- self.stub!(:assert_routing).and_return true
220
- lambda {
221
- { :put => "/rspec_on_rails_specs/37" }.
222
- should_not route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37")
223
- }.should raise_error( /expected a routing error.*be_routable/im )
224
- end
225
- end
226
-
227
- describe "failing due to wrong HTTP method" do
228
- it "raises method error and suggests should_not be_routable()" do
229
- self.stub!(:assert_routing) { raise ActionController::MethodNotAllowed }
230
- lambda {
231
- { :post => "/rspec_on_rails_specs/37" }.
232
- should route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37" )
233
- }.should raise_error(ActionController::MethodNotAllowed, /rspec_on_rails_specs\/37.*should_not be_routable/ )
234
- end
235
- end
236
- end
237
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "assert_equal", :shared => true do
4
- it "like assert_equal" do
5
- assert_equal 1, 1
6
- lambda {
7
- assert_equal 1, 2
8
- }.should raise_error(::Test::Unit::AssertionFailedError)
9
- end
10
- end
11
-
12
- describe "A model spec should be able to access 'test/unit' assertions", :type => :model do
13
- it_should_behave_like "assert_equal"
14
- end
15
-
16
- describe "A view spec should be able to access 'test/unit' assertions", :type => :view do
17
- it_should_behave_like "assert_equal"
18
- end
19
-
20
- describe "A helper spec should be able to access 'test/unit' assertions", :type => :helper do
21
- it_should_behave_like "assert_equal"
22
- end
23
-
24
- describe "A controller spec with integrated views should be able to access 'test/unit' assertions", :type => :controller do
25
- controller_name :controller_spec
26
- integrate_views
27
- it_should_behave_like "assert_equal"
28
- end
29
-
30
- describe "A controller spec should be able to access 'test/unit' assertions", :type => :controller do
31
- controller_name :controller_spec
32
- it_should_behave_like "assert_equal"
33
- end
@@ -1,346 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "A template with an implicit helper", :type => :view do
4
- before(:each) do
5
- render "view_spec/implicit_helper"
6
- end
7
-
8
- accesses_configured_helper_methods
9
-
10
- it "should include the helper" do
11
- response.should have_tag('div', :content => "This is text from a method in the ViewSpecHelper")
12
- end
13
-
14
- it "should include the application helper" do
15
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
16
- end
17
-
18
- it "should have access to named routes" do
19
- rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
20
- rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
21
- end
22
- end
23
-
24
- describe "A template requiring an explicit helper", :type => :view do
25
- before(:each) do
26
- render "view_spec/explicit_helper", :helper => 'explicit'
27
- end
28
-
29
- it "should include the helper if specified" do
30
- response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
31
- end
32
-
33
- it "should include the application helper" do
34
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
35
- end
36
- end
37
-
38
- describe "A template requiring multiple explicit helpers", :type => :view do
39
- before(:each) do
40
- render "view_spec/multiple_helpers", :helpers => ['explicit', 'more_explicit']
41
- end
42
-
43
- it "should include all specified helpers" do
44
- response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
45
- response.should have_tag('div', :content => "This is text from a method in the MoreExplicitHelper")
46
- end
47
-
48
- it "should include the application helper" do
49
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
50
- end
51
- end
52
-
53
- describe "Message Expectations on helper methods", :type => :view do
54
- it "should work" do
55
- template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 1')
56
- render "view_spec/implicit_helper"
57
- response.body.should =~ /alternate message 1/
58
- end
59
-
60
- it "should work twice" do
61
- template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 2')
62
- render "view_spec/implicit_helper"
63
- response.body.should =~ /alternate message 2/
64
- end
65
- end
66
-
67
- describe "A template that includes a partial", :type => :view do
68
- def render!
69
- render "view_spec/template_with_partial"
70
- end
71
-
72
- it "should render the enclosing template" do
73
- render!
74
- response.should have_tag('div', "method_in_partial in ViewSpecHelper")
75
- end
76
-
77
- it "should render the partial" do
78
- render!
79
- response.should have_tag('div', "method_in_template_with_partial in ViewSpecHelper")
80
- end
81
-
82
- it "should include the application helper" do
83
- render!
84
- response.should have_tag('div', "This is text from a method in the ApplicationHelper")
85
- end
86
-
87
- it "should pass should_receive(:render) with the right partial" do
88
- template.should_receive(:render).with(:partial => 'partial')
89
- render!
90
- template.verify_rendered
91
- end
92
-
93
- it "should fail should_receive(:render) with the wrong partial" do
94
- template.should_receive(:render).with(:partial => 'non_existent')
95
- render!
96
- begin
97
- template.verify_rendered
98
- rescue Spec::Mocks::MockExpectationError => e
99
- ensure
100
- e.backtrace.find{|line| line =~ /#{__FILE__}\:#{__LINE__ - 6}/}.should_not be_nil
101
- end
102
- end
103
-
104
- it "should pass should_receive(:render) when a partial is expected twice and happens twice" do
105
- template.should_receive(:render).with(:partial => 'partial_used_twice').twice
106
- render!
107
- template.verify_rendered
108
- end
109
-
110
- it "should pass should_receive(:render) when a partial is expected once and happens twice" do
111
- template.should_receive(:render).with(:partial => 'partial_used_twice')
112
- render!
113
- begin
114
- template.verify_rendered
115
- rescue Spec::Mocks::MockExpectationError => e
116
- ensure
117
- e.backtrace.find{|line| line =~ /#{__FILE__}\:#{__LINE__ - 6}/}.should_not be_nil
118
- end
119
- end
120
-
121
- it "should fail should_receive(:render) with the right partial but wrong options" do
122
- template.should_receive(:render).with(:partial => 'partial', :locals => {:thing => Object.new})
123
- render!
124
- lambda {template.verify_rendered}.should raise_error(Spec::Mocks::MockExpectationError)
125
- end
126
- end
127
-
128
- describe "A partial that includes a partial", :type => :view do
129
- it "should support should_receive(:render) with nested partial" do
130
- obj = Object.new
131
- template.should_receive(:render).with(:partial => 'partial', :object => obj)
132
- render :partial => "view_spec/partial_with_sub_partial", :locals => { :partial => obj }
133
- end
134
- end
135
-
136
- describe "A view that includes a partial using :collection and :spacer_template", :type => :view do
137
- it "should render the partial w/ spacer_tamplate" do
138
- render "view_spec/template_with_partial_using_collection"
139
- response.should have_tag('div',/method_in_partial/)
140
- response.should have_tag('div',/ApplicationHelper/)
141
- response.should have_tag('div',/ViewSpecHelper/)
142
- response.should have_tag('hr#spacer')
143
- end
144
-
145
- it "should render the partial" do
146
- template.should_receive(:render).with(:partial => 'partial',
147
- :collection => ['Alice', 'Bob'],
148
- :spacer_template => 'spacer')
149
- render "view_spec/template_with_partial_using_collection"
150
- end
151
-
152
- end
153
-
154
- describe "A view that includes a partial using an array as partial_path", :type => :view do
155
- before(:each) do
156
- renderable_object = Object.new
157
- renderable_object.stub!(:name).and_return("Renderable Object")
158
- assigns[:array] = [renderable_object]
159
- end
160
-
161
- it "should render the array passed through to render_partial without modification" do
162
- render "view_spec/template_with_partial_with_array"
163
- response.body.should match(/^Renderable Object$/)
164
- end
165
- end
166
-
167
- describe "Different types of renders (not :template)", :type => :view do
168
- it "should render partial with local" do
169
- render :partial => "view_spec/partial_with_local_variable", :locals => {:x => "Ender"}
170
- response.should have_tag('div', :content => "Ender")
171
- end
172
- end
173
-
174
- describe "A view", :type => :view do
175
- before(:each) do
176
- session[:key] = "session"
177
- params[:key] = "params"
178
- flash[:key] = "flash"
179
- flash.now[:now_key] = "flash.now"
180
- render "view_spec/accessor"
181
- end
182
-
183
- it "uses the template as the implicit subject" do
184
- subject.should == template
185
- end
186
-
187
- it "has access to session data" do
188
- response.should have_tag("div#session", "session")
189
- end
190
-
191
- it "has access to params data" do
192
- response.should have_tag("div#params", "params")
193
- end
194
-
195
- it "has access to flash" do
196
- response.should have_tag("div#flash", "flash")
197
- end
198
-
199
- it "has access to flash.now" do
200
- response.should have_tag("div#flash_now", "flash.now")
201
- end
202
-
203
- it "has a controller param" do
204
- response.should have_tag("div#controller", "view_spec")
205
- end
206
-
207
- it "has an action param" do
208
- response.should have_tag("div#action", "accessor")
209
- end
210
- end
211
-
212
- describe "A view with a form_tag", :type => :view do
213
- it "should render the right action" do
214
- render "view_spec/entry_form"
215
- response.should have_tag("form[action=?]","/view_spec/entry_form")
216
- end
217
- end
218
-
219
- describe "An instantiated ViewExampleGroupController", :type => :view do
220
- before do
221
- render "view_spec/foo/show"
222
- end
223
-
224
- it "should return the name of the real controller that it replaces" do
225
- @controller.controller_name.should == 'foo'
226
- end
227
-
228
- it "should return the path of the real controller that it replaces" do
229
- @controller.controller_path.should == 'view_spec/foo'
230
- end
231
- end
232
-
233
- describe "a block helper", :type => :view do
234
- it "should not yield when not told to in the example" do
235
- template.should_receive(:if_allowed)
236
- render "view_spec/block_helper"
237
- response.should_not have_tag("div","block helper was rendered")
238
- end
239
-
240
- it "should yield when told to in the example" do
241
- template.should_receive(:if_allowed).and_yield
242
- render "view_spec/block_helper"
243
- response.should have_tag("div","block helper was rendered")
244
- end
245
- end
246
-
247
- describe "render :inline => ...", :type => :view do
248
- it "should render ERB right in the spec" do
249
- render :inline => %|<%= text_field_tag('field_name', 'Value') %>|
250
- response.should have_tag("input[type=?][name=?][value=?]","text","field_name","Value")
251
- end
252
- end
253
-
254
- describe "render 'view_spec/foo/show'", :type => :view do
255
- it "should derive action name using the first part of the template name" do
256
- render 'view_spec/foo/show'
257
- request.path_parameters[:action].should == 'show'
258
- end
259
- end
260
-
261
- describe "view_spec/foo/show", :type => :view do
262
- context "rendered with no args" do
263
- it "renders just fine" do
264
- render
265
- request.path_parameters[:action].should == 'show'
266
- end
267
- end
268
- end
269
-
270
- describe "setting path parameters", :type => :view do
271
- describe "(controller)" do
272
- it "should supercede the default path parameters" do
273
- render "view_spec/entry_form", :path_parameters => {:controller => 'foo'}
274
- request.path_parameters[:controller].should == 'foo'
275
- end
276
- end
277
- describe "(action)" do
278
- it "should supercede the default path parameters" do
279
- render "view_spec/entry_form", :path_parameters => {:action => 'foo'}
280
- request.path_parameters[:action].should == 'foo'
281
- end
282
- end
283
- describe "(something arbitrary)" do
284
- it "should supercede the default path parameters" do
285
- render "view_spec/entry_form", :path_parameters => {:foo => 'bar'}
286
- request.path_parameters[:foo].should == 'bar'
287
- end
288
- end
289
- end
290
-
291
- describe "route helpers", :type => :view do
292
- it "should be available before render is called" do
293
- custom_route_path.should == '/custom_route'
294
- end
295
- end
296
-
297
- module Spec
298
- module Rails
299
- module Example
300
- describe ViewExampleGroup do
301
- it "should clear its name from the description" do
302
- group = describe("foo", :type => :view) do
303
- $nested_group = describe("bar") do
304
- end
305
- end
306
- group.description.to_s.should == "foo"
307
- $nested_group.description.to_s.should == "foo bar"
308
- end
309
-
310
- it "should clear ActionView::Base.base_view_path on teardown" do
311
- group = describe("base_view_path_cleared flag", :type => :view) {}
312
- example = group.new(Spec::Example::ExampleProxy.new) {}
313
-
314
- ActionView::Base.should_receive(:base_view_path=).with(nil)
315
- example.run_after_each
316
- end
317
- end
318
- end
319
- end
320
- end
321
-
322
- describe "bug http://rspec.lighthouseapp.com/projects/5645/tickets/510", :type => :view do
323
- describe "a view example with should_not_receive" do
324
- it "should render the view" do
325
- obj = mock('model')
326
- obj.should_receive(:render_partial?).and_return false
327
- assigns[:obj] = obj
328
- template.should_not_receive(:render).with(:partial => 'some_partial')
329
- render "view_spec/should_not_receive"
330
- end
331
- end
332
- end
333
-
334
- describe "bug https://rspec.lighthouseapp.com/projects/5645/tickets/787", :type => :view do
335
- describe "a view example checking a link" do
336
- it "should have access to link_to" do
337
- render "view_spec/view_helpers"
338
- response.body.should include(link_to("edit", "this_is_the_link"))
339
- end
340
-
341
- it "should use link_to within have_tag" do
342
- render "view_spec/view_helpers"
343
- response.body.should have_tag("span", :html => link_to("edit", "this_is_the_link"))
344
- end
345
- end
346
- end