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,29 +0,0 @@
1
- require 'action_controller/cookies'
2
-
3
- module Spec
4
- module Rails
5
- module Example
6
- class CookiesProxy
7
- def initialize(example)
8
- @example = example
9
- end
10
-
11
- def[]=(name, value)
12
- if ::Rails::VERSION::STRING >= '2.3'
13
- @example.request.cookies[name.to_s] = value
14
- else
15
- @example.request.cookies[name.to_s] = CGI::Cookie.new(name.to_s, value)
16
- end
17
- end
18
-
19
- def [](name)
20
- @example.response.cookies[name.to_s]
21
- end
22
-
23
- def delete(name)
24
- @example.response.cookies.delete(name.to_s)
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,106 +0,0 @@
1
- require 'action_controller/test_case'
2
-
3
- module Spec
4
- module Rails
5
- module Example
6
- class FunctionalExampleGroup < ActionController::TestCase
7
- def setup
8
- # no-op to override AC::TC's setup w/ conflicts with the before(:each) below
9
- end
10
-
11
- attr_reader :request, :response
12
-
13
- # The params hash accessed within a view or helper. Use this before
14
- # rendering a view or calling a helper to provide data used by the
15
- # view or helper.
16
- #
17
- # == Examples
18
- # # in a view spec
19
- # params[:name] = "David"
20
- # render
21
- # response.should have_tag("div.name","David")
22
- #
23
- # # in a helper spec
24
- # params[:first_name] = "David"
25
- # params[:last_name] = "Chelimsky"
26
- # helper.full_name.should == "David Chelimsky"
27
- def params
28
- request.parameters
29
- end
30
-
31
- # Provides access to the flash hash. Use this after rendering a
32
- # view, calling a helper or calling a controller action.
33
- #
34
- # == Examples
35
- # post :create
36
- # flash[:notice].should == "Success!"
37
- def flash
38
- @controller.__send__ :flash
39
- end
40
-
41
- # Provides access to the session hash. Use this before or after
42
- # rendering a view, calling a helper or calling a controller action.
43
- def session
44
- request.session
45
- end
46
-
47
- # Overrides the <tt>cookies()</tt> method in
48
- # ActionController::TestResponseBehaviour, returning a proxy that
49
- # accesses the requests cookies when setting a cookie and the
50
- # responses cookies when reading one. This allows you to set and read
51
- # cookies in examples using the same API with which you set and read
52
- # them in controllers.
53
- #
54
- # == Examples (Rails 2.0 > 2.2)
55
- #
56
- # cookies[:user_id] = {:value => '1234', :expires => 1.minute.ago}
57
- # get :index
58
- # response.should be_redirect
59
- #
60
- # == Examples (Rails 2.3)
61
- #
62
- # Rails 2.3 changes the way cookies are made available to functional
63
- # tests (and therefore rspec controller specs), only making single
64
- # values available with no access to other aspects of the cookie. This
65
- # is backwards-incompatible, so you have to change your examples to
66
- # look like this:
67
- #
68
- # cookies[:foo] = 'bar'
69
- # get :index
70
- # cookies[:foo].should == 'bar'
71
- def cookies
72
- @cookies ||= Spec::Rails::Example::CookiesProxy.new(self)
73
- end
74
-
75
- alias_method :orig_assigns, :assigns
76
-
77
- # :call-seq:
78
- # assigns()
79
- #
80
- # Hash of instance variables to values that are made available to
81
- # views. == Examples
82
- #
83
- # #in thing_controller.rb
84
- # def new
85
- # @thing = Thing.new
86
- # end
87
- #
88
- # #in thing_controller_spec
89
- # get 'new'
90
- # assigns[:registration].should == Thing.new
91
- #--
92
- # NOTE - Even though docs only use assigns[:key] format, this supports
93
- # assigns(:key) for backwards compatibility.
94
- #++
95
- def assigns(key = nil)
96
- if key.nil?
97
- _assigns_hash_proxy
98
- else
99
- _assigns_hash_proxy[key]
100
- end
101
- end
102
-
103
- end
104
- end
105
- end
106
- end
@@ -1,153 +0,0 @@
1
- module Spec
2
- module Rails
3
- module Example
4
- class HelperExampleGroupController < ApplicationController #:nodoc:
5
- attr_accessor :request, :url
6
- end
7
-
8
- # Helper Specs live in $RAILS_ROOT/spec/helpers/.
9
- #
10
- # Helper Specs use Spec::Rails::Example::HelperExampleGroup, which allows you to
11
- # include your Helper directly in the context and write specs directly
12
- # against its methods.
13
- #
14
- # HelperExampleGroup also includes the standard lot of ActionView::Helpers in case your
15
- # helpers rely on any of those.
16
- #
17
- # == Example
18
- #
19
- # module ThingHelper
20
- # def number_of_things
21
- # Thing.count
22
- # end
23
- # end
24
- #
25
- # describe "ThingHelper example_group" do
26
- # include ThingHelper
27
- # it "should tell you the number of things" do
28
- # Thing.should_receive(:count).and_return(37)
29
- # number_of_things.should == 37
30
- # end
31
- # end
32
- class HelperExampleGroup < FunctionalExampleGroup
33
- tests HelperExampleGroupController
34
- attr_accessor :output_buffer
35
-
36
- class HelperObject < ActionView::Base
37
- def initialize(*args)
38
- @template = self
39
- super
40
- end
41
- def protect_against_forgery?
42
- false
43
- end
44
-
45
- attr_writer :session, :request, :flash, :params, :controller
46
-
47
- private
48
- attr_reader :session, :request, :flash, :params, :controller
49
- end
50
-
51
- class << self
52
- # The helper name....
53
- def helper_name(name=nil)
54
- @helper_being_described = "#{name}_helper".camelize.constantize
55
- send :include, @helper_being_described
56
- end
57
-
58
- def helper
59
- HelperObject.new.tap do |helper_object|
60
- if @helper_being_described.nil?
61
- if described_type.class == Module
62
- helper_object.extend described_type
63
- end
64
- else
65
- helper_object.extend @helper_being_described
66
- end
67
- end
68
- end
69
- end
70
-
71
- # Returns an instance of ActionView::Base with the helper being spec'd
72
- # included.
73
- #
74
- # == Example
75
- #
76
- # describe PersonHelper do
77
- # it "should write a link to person with the name" do
78
- # assigns[:person] = mock_model(Person, :full_name => "Full Name", :id => 37, :new_record? => false)
79
- # helper.link_to_person.should == %{<a href="/people/37">Full Name</a>}
80
- # end
81
- # end
82
- #
83
- # module PersonHelper
84
- # def link_to_person
85
- # link_to person.full_name, url_for(person)
86
- # end
87
- # end
88
- #
89
- def helper
90
- @helper ||= self.class.helper
91
- end
92
-
93
- def orig_assigns
94
- helper.assigns
95
- end
96
-
97
- # Reverse the load order so that custom helpers which are defined last
98
- # are also loaded last.
99
- ActionView::Base.included_modules.reverse.each do |mod|
100
- include mod if mod.parents.include?(ActionView::Helpers)
101
- end
102
-
103
- before(:each) do
104
- @controller.request = @request
105
- @controller.url = ActionController::UrlRewriter.new @request, {} # url_for
106
-
107
- @flash = ActionController::Flash::FlashHash.new
108
- session['flash'] = @flash
109
-
110
- @output_buffer = ""
111
- @template = helper
112
- ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
113
-
114
- helper.session = session
115
- helper.request = @request
116
- helper.flash = flash
117
- helper.params = params
118
- helper.controller = @controller
119
- end
120
-
121
- def flash
122
- @flash
123
- end
124
-
125
- def eval_erb(text)
126
- erb_args = [text]
127
- if helper.respond_to?(:output_buffer)
128
- erb_args += [nil, nil, '@output_buffer']
129
- end
130
-
131
- helper.instance_eval do
132
- ERB.new(*erb_args).result(binding)
133
- end
134
- end
135
-
136
- # TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
137
- # When that is done, remove this method
138
- def protect_against_forgery?
139
- false
140
- end
141
-
142
- Spec::Example::ExampleGroupFactory.register(:helper, self)
143
-
144
- protected
145
-
146
- def _assigns_hash_proxy
147
- @_assigns_hash_proxy ||= AssignsHashProxy.new(self) {helper}
148
- end
149
-
150
- end
151
- end
152
- end
153
- end
@@ -1,16 +0,0 @@
1
- class ActionController::IntegrationTest
2
- alias_method :orig_initialize, :initialize
3
- def initialize(*args)
4
- super
5
- end
6
- end
7
-
8
- module Spec
9
- module Rails
10
- module Example
11
- class IntegrationExampleGroup < ActionController::IntegrationTest
12
- Spec::Example::ExampleGroupFactory.register(:integration, self)
13
- end
14
- end
15
- end
16
- end
@@ -1,15 +0,0 @@
1
- module Spec
2
- module Rails
3
- module Example
4
- # Model examples live in $RAILS_ROOT/spec/models/.
5
- #
6
- # Model examples use Spec::Rails::Example::ModelExampleGroup, which
7
- # provides support for fixtures and some custom expectations via extensions
8
- # to ActiveRecord::Base.
9
- base = defined?(ActiveRecord::TestCase) ? ActiveRecord::TestCase : ActiveSupport::TestCase
10
- class ModelExampleGroup < base
11
- Spec::Example::ExampleGroupFactory.register(:model, self)
12
- end
13
- end
14
- end
15
- end
@@ -1,80 +0,0 @@
1
- require 'spec/mocks/framework'
2
-
3
- module Spec
4
- module Rails
5
- module Example
6
- # Extends the #should_receive, #should_not_receive and #stub! methods in rspec's
7
- # mocking framework to handle #render calls to controller in controller examples
8
- # and template and view examples
9
- module RenderObserver
10
-
11
- def verify_rendered # :nodoc:
12
- render_proxy.rspec_verify
13
- end
14
-
15
- def unregister_verify_after_each #:nodoc:
16
- proc = verify_rendered_proc
17
- Spec::Example::ExampleGroup.remove_after(:each, &proc)
18
- end
19
-
20
- def should_receive(*args)
21
- if args[0] == :render
22
- register_verify_after_each
23
- render_proxy.should_receive(:render, :expected_from => caller(1)[0])
24
- else
25
- super
26
- end
27
- end
28
-
29
- def should_not_receive(*args)
30
- if args[0] == :render
31
- register_verify_after_each
32
- render_proxy.should_not_receive(:render)
33
- else
34
- super
35
- end
36
- end
37
-
38
- def stub(*args)
39
- if args[0] == :render
40
- register_verify_after_each
41
- render_proxy.stub(args.first, :expected_from => caller(1)[0])
42
- else
43
- super
44
- end
45
- end
46
-
47
- # FIXME - for some reason, neither alias nor alias_method are working
48
- # as expected in the else branch, so this is a duplicate of stub()
49
- # above. Could delegate, but then we'd run into craziness handling
50
- # :expected_from. This will have to do for the moment.
51
- def stub!(*args)
52
- if args[0] == :render
53
- register_verify_after_each
54
- render_proxy.stub!(args.first, :expected_from => caller(1)[0])
55
- else
56
- super
57
- end
58
- end
59
-
60
- def verify_rendered_proc #:nodoc:
61
- template = self
62
- @verify_rendered_proc ||= Proc.new do
63
- template.verify_rendered
64
- template.unregister_verify_after_each
65
- end
66
- end
67
-
68
- def register_verify_after_each #:nodoc:
69
- proc = verify_rendered_proc
70
- Spec::Example::ExampleGroup.after(:each, &proc)
71
- end
72
-
73
- def render_proxy #:nodoc:
74
- @render_proxy ||= Spec::Mocks::Mock.new("render_proxy")
75
- end
76
-
77
- end
78
- end
79
- end
80
- end
@@ -1,16 +0,0 @@
1
- module Spec
2
- module Rails
3
- module Example
4
-
5
- class RoutingExampleGroup < ActionController::TestCase
6
- class RoutingController < ActionController::Base
7
- end
8
-
9
- tests RoutingController
10
-
11
- Spec::Example::ExampleGroupFactory.register(:routing, self)
12
- end
13
-
14
- end
15
- end
16
- end
@@ -1,66 +0,0 @@
1
- require 'rack/utils'
2
-
3
- module Spec
4
- module Rails
5
- module Example
6
- module RoutingHelpers
7
-
8
- class RouteFor
9
- def initialize(example, options)
10
- @example, @options = example, options
11
- end
12
-
13
- def ==(expected)
14
- if Hash === expected
15
- path, querystring = expected[:path].split('?')
16
- path_string = path
17
- path = expected.merge(:path => path)
18
- else
19
- path, querystring = expected.split('?')
20
- path_string = path
21
- path = { :path => path, :method => :get }
22
- end
23
- params = querystring.blank? ? {} : Rack::Utils.parse_query(querystring).symbolize_keys!
24
- begin
25
- @example.assert_routing(path, @options, {}, params)
26
- true
27
- rescue ActionController::RoutingError, ::Test::Unit::AssertionFailedError => e
28
- raise e.class, "#{e}\nIf you're expecting this failure, we suggest {:#{path[:method]}=>\"#{path[:path]}\"}.should_not be_routable"
29
- end
30
- end
31
- end
32
- # Uses ActionController::Routing::Routes to generate
33
- # the correct route for a given set of options.
34
- # == Examples
35
- # route_for(:controller => 'registrations', :action => 'edit', :id => '1')
36
- # => '/registrations/1/edit'
37
- # route_for(:controller => 'registrations', :action => 'create')
38
- # => {:path => "/registrations", :method => :post}
39
- def route_for(options)
40
- RouteFor.new(self, options)
41
- end
42
-
43
- # Uses ActionController::Routing::Routes to parse
44
- # an incoming path so the parameters it generates can be checked
45
- #
46
- # Note that this method is obsoleted by the route_to matcher.
47
- # == Example
48
- # params_from(:get, '/registrations/1/edit')
49
- # => :controller => 'registrations', :action => 'edit', :id => '1'
50
- def params_from(method, path)
51
- ensure_that_routes_are_loaded
52
- path, querystring = path.split('?')
53
- params = ActionController::Routing::Routes.recognize_path(path, :method => method)
54
- querystring.blank? ? params : params.merge(Rack::Utils.parse_query(querystring).symbolize_keys!)
55
- end
56
-
57
- private
58
-
59
- def ensure_that_routes_are_loaded
60
- ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
61
- end
62
-
63
- end
64
- end
65
- end
66
- end