dchelimsky-rspec-rails 1.1.12 → 1.1.99.1

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 (58) hide show
  1. data/History.txt +29 -2
  2. data/License.txt +1 -1
  3. data/Manifest.txt +7 -6
  4. data/README.txt +5 -4
  5. data/Rakefile +14 -2
  6. data/TODO.txt +1 -0
  7. data/Upgrade.txt +30 -0
  8. data/generators/rspec/templates/rspec.rake +12 -10
  9. data/generators/rspec/templates/script/spec_server +10 -111
  10. data/generators/rspec_controller/rspec_controller_generator.rb +1 -5
  11. data/generators/rspec_scaffold/rspec_scaffold_generator.rb +9 -13
  12. data/generators/rspec_scaffold/templates/controller_spec.rb +25 -25
  13. data/generators/rspec_scaffold/templates/edit_erb_spec.rb +1 -1
  14. data/generators/rspec_scaffold/templates/helper_spec.rb +1 -1
  15. data/generators/rspec_scaffold/templates/index_erb_spec.rb +1 -1
  16. data/generators/rspec_scaffold/templates/new_erb_spec.rb +1 -1
  17. data/generators/rspec_scaffold/templates/routing_spec.rb +24 -20
  18. data/generators/rspec_scaffold/templates/show_erb_spec.rb +1 -1
  19. data/lib/spec/rails/example/controller_example_group.rb +46 -16
  20. data/lib/spec/rails/example/functional_example_group.rb +7 -22
  21. data/lib/spec/rails/example/helper_example_group.rb +6 -9
  22. data/lib/spec/rails/example/model_example_group.rb +1 -1
  23. data/lib/spec/rails/example/render_observer.rb +0 -26
  24. data/lib/spec/rails/example/view_example_group.rb +32 -34
  25. data/lib/spec/rails/example.rb +0 -2
  26. data/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
  27. data/lib/spec/rails/extensions/spec/runner/configuration.rb +12 -44
  28. data/lib/spec/rails/extensions.rb +1 -1
  29. data/lib/spec/rails/matchers/ar_be_valid.rb +3 -0
  30. data/lib/spec/rails/matchers/have_text.rb +1 -1
  31. data/lib/spec/rails/matchers/include_text.rb +2 -2
  32. data/lib/spec/rails/matchers/redirect_to.rb +6 -14
  33. data/lib/spec/rails/matchers/render_template.rb +5 -1
  34. data/lib/spec/rails/spec_server.rb +86 -0
  35. data/lib/spec/rails/version.rb +2 -2
  36. data/lib/spec/rails.rb +10 -9
  37. data/rspec-rails.gemspec +12 -9
  38. data/spec/resources/controllers/controller_spec_controller.rb +1 -1
  39. data/spec/resources/controllers/render_spec_controller.rb +1 -1
  40. data/spec/resources/controllers/rjs_spec_controller.rb +1 -1
  41. data/spec/spec/rails/example/configuration_spec.rb +15 -29
  42. data/spec/spec/rails/example/{controller_spec_spec.rb → controller_example_group_spec.rb} +84 -60
  43. data/spec/spec/rails/example/cookies_proxy_spec.rb +32 -36
  44. data/spec/spec/rails/example/example_group_factory_spec.rb +5 -5
  45. data/spec/spec/rails/example/{helper_spec_spec.rb → helper_example_group_spec.rb} +8 -2
  46. data/spec/spec/rails/example/{model_spec_spec.rb → model_example_group_spec.rb} +3 -1
  47. data/spec/spec/rails/example/{view_spec_spec.rb → view_example_group_spec.rb} +33 -15
  48. data/spec/spec/rails/matchers/ar_be_valid_spec.rb +10 -0
  49. data/spec/spec/rails/matchers/assert_select_spec.rb +1 -0
  50. data/spec/spec/rails/matchers/have_text_spec.rb +12 -4
  51. data/spec/spec/rails/matchers/include_text_spec.rb +11 -13
  52. data/spec/spec/rails/matchers/redirect_to_spec.rb +221 -210
  53. data/spec/spec/rails/matchers/render_template_spec.rb +161 -158
  54. data/spec/spec/rails/spec_server_spec.rb +18 -7
  55. data/spec/spec_helper.rb +20 -9
  56. metadata +21 -10
  57. data/lib/spec/rails/example/rails_example_group.rb +0 -28
  58. data/lib/spec/rails/extensions/action_controller/base.rb +0 -14
@@ -2,57 +2,61 @@ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * class_nesting_dep
2
2
 
3
3
  describe <%= controller_class_name %>Controller do
4
4
  describe "route generation" do
5
- it "should map #index" do
5
+ it "maps #index" do
6
6
  route_for(:controller => "<%= table_name %>", :action => "index").should == "/<%= table_name %>"
7
7
  end
8
8
 
9
- it "should map #new" do
9
+ it "maps #new" do
10
10
  route_for(:controller => "<%= table_name %>", :action => "new").should == "/<%= table_name %>/new"
11
11
  end
12
12
 
13
- it "should map #show" do
14
- route_for(:controller => "<%= table_name %>", :action => "show", :id => 1).should == "/<%= table_name %>/1"
13
+ it "maps #show" do
14
+ route_for(:controller => "<%= table_name %>", :action => "show", :id => "1").should == "/<%= table_name %>/1"
15
15
  end
16
16
 
17
- it "should map #edit" do
18
- route_for(:controller => "<%= table_name %>", :action => "edit", :id => 1).should == "/<%= table_name %>/1<%= resource_edit_path %>"
19
- end
20
-
21
- it "should map #update" do
22
- route_for(:controller => "<%= table_name %>", :action => "update", :id => 1).should == "/<%= table_name %>/1"
17
+ it "maps #edit" do
18
+ route_for(:controller => "<%= table_name %>", :action => "edit", :id => "1").should == "/<%= table_name %>/1/edit"
23
19
  end
20
+
21
+ it "maps #create" do
22
+ route_for(:controller => "<%= table_name %>", :action => "create").should == {:path => "/<%= table_name %>", :method => :post}
23
+ end
24
+
25
+ it "maps #update" do
26
+ route_for(:controller => "<%= table_name %>", :action => "update", :id => "1").should == {:path =>"/<%= table_name %>/1", :method => :put}
27
+ end
24
28
 
25
- it "should map #destroy" do
26
- route_for(:controller => "<%= table_name %>", :action => "destroy", :id => 1).should == "/<%= table_name %>/1"
29
+ it "maps #destroy" do
30
+ route_for(:controller => "<%= table_name %>", :action => "destroy", :id => "1").should == {:path =>"/<%= table_name %>/1", :method => :delete}
27
31
  end
28
32
  end
29
33
 
30
34
  describe "route recognition" do
31
- it "should generate params for #index" do
35
+ it "generates params for #index" do
32
36
  params_from(:get, "/<%= table_name %>").should == {:controller => "<%= table_name %>", :action => "index"}
33
37
  end
34
38
 
35
- it "should generate params for #new" do
39
+ it "generates params for #new" do
36
40
  params_from(:get, "/<%= table_name %>/new").should == {:controller => "<%= table_name %>", :action => "new"}
37
41
  end
38
42
 
39
- it "should generate params for #create" do
43
+ it "generates params for #create" do
40
44
  params_from(:post, "/<%= table_name %>").should == {:controller => "<%= table_name %>", :action => "create"}
41
45
  end
42
46
 
43
- it "should generate params for #show" do
47
+ it "generates params for #show" do
44
48
  params_from(:get, "/<%= table_name %>/1").should == {:controller => "<%= table_name %>", :action => "show", :id => "1"}
45
49
  end
46
50
 
47
- it "should generate params for #edit" do
48
- params_from(:get, "/<%= table_name %>/1<%= resource_edit_path %>").should == {:controller => "<%= table_name %>", :action => "edit", :id => "1"}
51
+ it "generates params for #edit" do
52
+ params_from(:get, "/<%= table_name %>/1/edit").should == {:controller => "<%= table_name %>", :action => "edit", :id => "1"}
49
53
  end
50
54
 
51
- it "should generate params for #update" do
55
+ it "generates params for #update" do
52
56
  params_from(:put, "/<%= table_name %>/1").should == {:controller => "<%= table_name %>", :action => "update", :id => "1"}
53
57
  end
54
58
 
55
- it "should generate params for #destroy" do
59
+ it "generates params for #destroy" do
56
60
  params_from(:delete, "/<%= table_name %>/1").should == {:controller => "<%= table_name %>", :action => "destroy", :id => "1"}
57
61
  end
58
62
  end
@@ -13,7 +13,7 @@ describe "/<%= table_name %>/show.<%= default_file_extension %>" do
13
13
  <% end -%>
14
14
  end
15
15
 
16
- it "should render attributes in <p>" do
16
+ it "renders attributes in <p>" do
17
17
  render "/<%= table_name %>/show.<%= default_file_extension %>"
18
18
  <% for attribute in output_attributes -%>
19
19
  response.should have_text(/<%= Regexp.escape(attribute.default_value).gsub(/^"|"$/, '')%>/)
@@ -61,10 +61,17 @@ module Spec
61
61
  end
62
62
 
63
63
  def inherited(klass) # :nodoc:
64
- klass.controller_class_name = controller_class_name
65
64
  klass.integrate_views(integrate_views?)
65
+ klass.subject { controller }
66
66
  super
67
67
  end
68
+
69
+ def set_description(*args)
70
+ super
71
+ if described_class && described_class.ancestors.include?(ActionController::Base)
72
+ tests described_class
73
+ end
74
+ end
68
75
 
69
76
  # You MUST provide a controller_name within the context of
70
77
  # your controller specs:
@@ -73,11 +80,10 @@ module Spec
73
80
  # controller_name :thing
74
81
  # ...
75
82
  def controller_name(name)
76
- @controller_class_name = "#{name}_controller".camelize
83
+ tests "#{name}_controller".camelize.constantize
77
84
  end
78
- attr_accessor :controller_class_name # :nodoc:
79
85
  end
80
-
86
+
81
87
  before(:each) do
82
88
  # Some Rails apps explicitly disable ActionMailer in environment.rb
83
89
  if defined?(ActionMailer)
@@ -107,14 +113,26 @@ module Spec
107
113
 
108
114
  def initialize(defined_description, options={}, &implementation) #:nodoc:
109
115
  super
110
- controller_class_name = self.class.controller_class_name
111
- if controller_class_name
112
- @controller_class_name = controller_class_name.to_s
113
- else
114
- @controller_class_name = self.class.described_type.to_s
115
- end
116
116
  @integrate_views = self.class.integrate_views?
117
117
  end
118
+
119
+ class RouteForMatcher
120
+ def initialize(example, options)
121
+ @example, @options = example, options
122
+ end
123
+
124
+ def ==(expected)
125
+ if Hash === expected
126
+ path, querystring = expected[:path].split('?')
127
+ path = expected.merge(:path => path)
128
+ else
129
+ path, querystring = expected.split('?')
130
+ end
131
+ params = querystring.blank? ? {} : @example.params_from_querystring(querystring)
132
+ @example.assert_recognizes(@options, path, params)
133
+ true
134
+ end
135
+ end
118
136
 
119
137
  # Uses ActionController::Routing::Routes to generate
120
138
  # the correct route for a given set of options.
@@ -122,28 +140,40 @@ module Spec
122
140
  # route_for(:controller => 'registrations', :action => 'edit', :id => 1)
123
141
  # => '/registrations/1;edit'
124
142
  def route_for(options)
125
- ensure_that_routes_are_loaded
126
- ActionController::Routing::Routes.generate(options)
143
+ RouteForMatcher.new(self, options)
127
144
  end
128
145
 
129
146
  # Uses ActionController::Routing::Routes to parse
130
147
  # an incoming path so the parameters it generates can be checked
131
148
  # == Example
132
- # params_from(:get, '/registrations/1;edit')
149
+ # params_from(:get, '/registrations/1/edit')
133
150
  # => :controller => 'registrations', :action => 'edit', :id => 1
134
151
  def params_from(method, path)
135
152
  ensure_that_routes_are_loaded
136
- ActionController::Routing::Routes.recognize_path(path, :method => method)
153
+ path, querystring = path.split('?')
154
+ params = ActionController::Routing::Routes.recognize_path(path, :method => method)
155
+ querystring.blank? ? params : params.merge(params_from_querystring(querystring))
137
156
  end
138
157
 
139
- protected
158
+ def params_from_querystring(querystring) # :nodoc:
159
+ params = {}
160
+ querystring.split('&').each do |piece|
161
+ key, value = piece.split('=')
162
+ params[key.to_sym] = value
163
+ end
164
+ params
165
+ end
166
+
167
+ protected
168
+
140
169
  def _assigns_hash_proxy
141
170
  @_assigns_hash_proxy ||= AssignsHashProxy.new self do
142
171
  @response.template
143
172
  end
144
173
  end
145
174
 
146
- private
175
+ private
176
+
147
177
  def ensure_that_routes_are_loaded
148
178
  ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
149
179
  end
@@ -1,21 +1,15 @@
1
+ require 'action_controller/test_case'
2
+
1
3
  module Spec
2
4
  module Rails
3
5
  module Example
4
- class FunctionalExampleGroup < RailsExampleGroup
5
- include ActionController::TestProcess
6
- include ActionController::Assertions
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
7
10
 
8
11
  attr_reader :request, :response
9
- before(:each) do
10
- @controller_class = @controller_class_name.split('::').inject(Object) { |k,n| k.const_get n }
11
- raise "Can't determine controller class for #{@controller_class_name}" if @controller_class.nil?
12
12
 
13
- @controller = @controller_class.new
14
- @request = ActionController::TestRequest.new
15
- @response = ActionController::TestResponse.new
16
- @response.session = @request.session
17
- end
18
-
19
13
  def params
20
14
  request.parameters
21
15
  end
@@ -25,7 +19,7 @@ module Spec
25
19
  end
26
20
 
27
21
  def session
28
- response.session
22
+ request.session
29
23
  end
30
24
 
31
25
  # Overrides the <tt>cookies()</tt> method in
@@ -35,15 +29,6 @@ module Spec
35
29
  # cookies in examples using the same API with which you set and read
36
30
  # them in controllers.
37
31
  #
38
- # == Examples (Rails >= 1.2.6)
39
- #
40
- # cookies[:user_id] = '1234'
41
- # get :index
42
- # assigns[:user].id.should == '1234'
43
- #
44
- # post :login
45
- # cookies[:login].expires.should == 1.week.from_now
46
- #
47
32
  # == Examples (Rails 2.0 > 2.2)
48
33
  #
49
34
  # cookies[:user_id] = {:value => '1234', :expires => 1.minute.ago}
@@ -1,6 +1,10 @@
1
1
  module Spec
2
2
  module Rails
3
3
  module Example
4
+ class HelperExampleGroupController < ApplicationController #:nodoc:
5
+ attr_accessor :request, :url
6
+ end
7
+
4
8
  # Helper Specs live in $RAILS_ROOT/spec/helpers/.
5
9
  #
6
10
  # Helper Specs use Spec::Rails::Example::HelperExampleGroup, which allows you to
@@ -12,7 +16,7 @@ module Spec
12
16
  #
13
17
  # == Example
14
18
  #
15
- # class ThingHelper
19
+ # module ThingHelper
16
20
  # def number_of_things
17
21
  # Thing.count
18
22
  # end
@@ -26,6 +30,7 @@ module Spec
26
30
  # end
27
31
  # end
28
32
  class HelperExampleGroup < FunctionalExampleGroup
33
+ tests HelperExampleGroupController
29
34
  attr_accessor :output_buffer
30
35
 
31
36
  class HelperObject < ActionView::Base
@@ -109,10 +114,6 @@ module Spec
109
114
  include mod if mod.parents.include?(ActionView::Helpers)
110
115
  end
111
116
 
112
- before(:all) do
113
- @controller_class_name = 'Spec::Rails::Example::HelperExampleGroupController'
114
- end
115
-
116
117
  before(:each) do
117
118
  @controller.request = @request
118
119
  @controller.url = ActionController::UrlRewriter.new @request, {} # url_for
@@ -162,10 +163,6 @@ module Spec
162
163
  end
163
164
 
164
165
  end
165
-
166
- class HelperExampleGroupController < ApplicationController #:nodoc:
167
- attr_accessor :request, :url
168
- end
169
166
  end
170
167
  end
171
168
  end
@@ -6,7 +6,7 @@ module Spec
6
6
  # Model examples use Spec::Rails::Example::ModelExampleGroup, which
7
7
  # provides support for fixtures and some custom expectations via extensions
8
8
  # to ActiveRecord::Base.
9
- class ModelExampleGroup < RailsExampleGroup
9
+ class ModelExampleGroup < ActiveSupport::TestCase
10
10
  Spec::Example::ExampleGroupFactory.register(:model, self)
11
11
  end
12
12
  end
@@ -8,32 +8,6 @@ module Spec
8
8
  # and template and view examples
9
9
  module RenderObserver
10
10
 
11
- # DEPRECATED
12
- #
13
- # Use should_receive(:render).with(opts) instead
14
- def expect_render(opts={})
15
- warn_deprecation("expect_render", "should_receive")
16
- register_verify_after_each
17
- render_proxy.should_receive(:render, :expected_from => caller(1)[0]).with(opts)
18
- end
19
-
20
- # DEPRECATED
21
- #
22
- # Use stub!(:render).with(opts) instead
23
- def stub_render(opts={})
24
- warn_deprecation("stub_render", "stub!")
25
- register_verify_after_each
26
- render_proxy.stub!(:render, :expected_from => caller(1)[0]).with(opts)
27
- end
28
-
29
- def warn_deprecation(deprecated_method, new_method)
30
- Kernel.warn <<-WARNING
31
- #{deprecated_method} is deprecated and will be removed from a future version of rspec-rails.
32
-
33
- Please just use object.#{new_method} instead.
34
- WARNING
35
- end
36
-
37
11
  def verify_rendered # :nodoc:
38
12
  render_proxy.rspec_verify
39
13
  end
@@ -1,6 +1,29 @@
1
1
  module Spec
2
2
  module Rails
3
3
  module Example
4
+ class ViewExampleGroupController < ApplicationController #:nodoc:
5
+ include Spec::Rails::Example::RenderObserver
6
+ attr_reader :template
7
+
8
+ def add_helper_for(template_path)
9
+ add_helper(template_path.split('/')[0])
10
+ end
11
+
12
+ def add_helper(name)
13
+ begin
14
+ helper_module = "#{name}_helper".camelize.constantize
15
+ rescue
16
+ return
17
+ end
18
+ (class << template; self; end).class_eval do
19
+ include helper_module
20
+ end
21
+ end
22
+
23
+ def forget_variables_added_to_assigns
24
+ end
25
+ end
26
+
4
27
  # View Examples live in $RAILS_ROOT/spec/views/.
5
28
  #
6
29
  # View Specs use Spec::Rails::Example::ViewExampleGroup,
@@ -24,22 +47,21 @@ module Spec
24
47
  # end
25
48
  # end
26
49
  class ViewExampleGroup < FunctionalExampleGroup
27
- before(:each) do
28
- ensure_that_flash_and_session_work_properly
29
- end
30
-
31
- after(:each) do
32
- ensure_that_base_view_path_is_not_set_across_example_groups
50
+ tests ViewExampleGroupController
51
+ class << self
52
+ def inherited(klass) # :nodoc:
53
+ klass.subject { template }
54
+ super
55
+ end
33
56
  end
34
57
 
35
- def initialize(defined_description, options={}, &implementation) #:nodoc:
36
- super
37
- @controller_class_name = "Spec::Rails::Example::ViewExampleGroupController"
38
- end
58
+ before {ensure_that_flash_and_session_work_properly}
59
+ after {ensure_that_base_view_path_is_not_set_across_example_groups}
39
60
 
40
61
  def ensure_that_flash_and_session_work_properly #:nodoc:
41
62
  @controller.send :initialize_template_class, @response
42
63
  @controller.send :assign_shortcuts, @request, @response
64
+ @controller.send :initialize_current_url
43
65
  @session = @controller.session
44
66
  @controller.class.send :public, :flash
45
67
  end
@@ -114,8 +136,6 @@ module Spec
114
136
 
115
137
  @controller.send(:params).reverse_merge! @request.parameters
116
138
 
117
- @controller.send :initialize_current_url
118
-
119
139
  @controller.class.instance_eval %{
120
140
  def controller_path
121
141
  "#{derived_controller_name(options)}"
@@ -156,28 +176,6 @@ module Spec
156
176
  end
157
177
  end
158
178
 
159
- class ViewExampleGroupController < ApplicationController #:nodoc:
160
- include Spec::Rails::Example::RenderObserver
161
- attr_reader :template
162
-
163
- def add_helper_for(template_path)
164
- add_helper(template_path.split('/')[0])
165
- end
166
-
167
- def add_helper(name)
168
- begin
169
- helper_module = "#{name}_helper".camelize.constantize
170
- rescue
171
- return
172
- end
173
- (class << template; self; end).class_eval do
174
- include helper_module
175
- end
176
- end
177
-
178
- def forget_variables_added_to_assigns
179
- end
180
- end
181
179
  end
182
180
  end
183
181
  end
@@ -1,9 +1,7 @@
1
1
  dir = File.dirname(__FILE__)
2
2
 
3
3
  require 'spec/rails/example/assigns_hash_proxy'
4
-
5
4
  require "spec/rails/example/render_observer"
6
- require "spec/rails/example/rails_example_group"
7
5
  require "spec/rails/example/model_example_group"
8
6
  require "spec/rails/example/functional_example_group"
9
7
  require "spec/rails/example/controller_example_group"
@@ -0,0 +1,7 @@
1
+ module ActiveSupport
2
+ class TestCase
3
+ include Spec::Rails::Matchers
4
+ include Spec::Rails::Mocks
5
+ end
6
+ end
7
+
@@ -1,76 +1,44 @@
1
1
  require 'spec/runner/configuration'
2
2
  require 'test_help'
3
3
 
4
- begin
5
- module Spec
6
- module Runner
7
- class Configuration
4
+ if defined?(ActiveRecord::Base)
5
+ module Spec
6
+ module Runner
7
+ class Configuration
8
8
 
9
- TEST_CASE = ActiveSupport.const_defined?(:TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase
10
-
11
- # Rails 1.2.3 does a copy of the @inheritable_attributes to the subclass when the subclass is
12
- # created. This causes an ordering issue when setting state on Configuration because the data is
13
- # already copied.
14
- # Iterating over EXAMPLE_GROUP_CLASSES causes the base ExampleGroup classes to have their
15
- # @inheritable_attributes updated.
16
- # TODO: BT - When we no longer support Rails 1.2.3, we can remove this functionality
17
- EXAMPLE_GROUP_CLASSES = [
18
- TEST_CASE,
19
- ::Spec::Rails::Example::RailsExampleGroup,
20
- ::Spec::Rails::Example::FunctionalExampleGroup,
21
- ::Spec::Rails::Example::ControllerExampleGroup,
22
- ::Spec::Rails::Example::ViewExampleGroup,
23
- ::Spec::Rails::Example::HelperExampleGroup,
24
- ::Spec::Rails::Example::ModelExampleGroup
25
- ]
26
- # All of this is ActiveRecord related and makes no sense if it's not used by the app
27
- if defined?(ActiveRecord::Base)
28
9
  def initialize
29
10
  super
30
11
  self.fixture_path = RAILS_ROOT + '/spec/fixtures'
31
12
  end
32
13
 
33
14
  def use_transactional_fixtures
34
- TEST_CASE.use_transactional_fixtures
15
+ ActiveSupport::TestCase.use_transactional_fixtures
35
16
  end
36
17
  def use_transactional_fixtures=(value)
37
- EXAMPLE_GROUP_CLASSES.each do |example_group|
38
- example_group.use_transactional_fixtures = value
39
- end
18
+ ActiveSupport::TestCase.use_transactional_fixtures = value
40
19
  end
41
20
 
42
21
  def use_instantiated_fixtures
43
- TEST_CASE.use_instantiated_fixtures
22
+ ActiveSupport::TestCase.use_instantiated_fixtures
44
23
  end
45
24
  def use_instantiated_fixtures=(value)
46
- EXAMPLE_GROUP_CLASSES.each do |example_group|
47
- example_group.use_instantiated_fixtures = value
48
- end
25
+ ActiveSupport::TestCase.use_instantiated_fixtures = value
49
26
  end
50
27
 
51
28
  def fixture_path
52
- TEST_CASE.fixture_path
29
+ ActiveSupport::TestCase.fixture_path
53
30
  end
54
31
  def fixture_path=(path)
55
- EXAMPLE_GROUP_CLASSES.each do |example_group|
56
- example_group.fixture_path = path
57
- end
32
+ ActiveSupport::TestCase.fixture_path = path
58
33
  end
59
34
 
60
35
  def global_fixtures
61
- TEST_CASE.fixture_table_names
36
+ ActiveSupport::TestCase.fixture_table_names
62
37
  end
63
38
  def global_fixtures=(fixtures)
64
- EXAMPLE_GROUP_CLASSES.each do |example_group|
65
- example_group.fixtures(*fixtures)
66
- end
39
+ ActiveSupport::TestCase.fixtures(*fixtures)
67
40
  end
68
41
  end
69
42
  end
70
43
  end
71
44
  end
72
- rescue Exception => e
73
- puts e.message
74
- puts e.backtrace
75
- raise e
76
- end
@@ -3,8 +3,8 @@ require 'spec'
3
3
  require 'spec/rails/extensions/spec/runner/configuration'
4
4
  require 'spec/rails/extensions/spec/matchers/have'
5
5
 
6
+ require 'spec/rails/extensions/active_support/test_case'
6
7
  require 'spec/rails/extensions/active_record/base'
7
- require 'spec/rails/extensions/action_controller/base'
8
8
  require 'spec/rails/extensions/action_controller/rescue'
9
9
  require 'spec/rails/extensions/action_controller/test_response'
10
10
  require 'spec/rails/extensions/action_view/base'
@@ -27,6 +27,9 @@ module Spec
27
27
  @matcher.negative_failure_message
28
28
  end
29
29
 
30
+ def description
31
+ "be valid"
32
+ end
30
33
  end
31
34
 
32
35
  # :call-seq:
@@ -22,7 +22,7 @@ module Spec
22
22
  "expected not to have text #{expected.inspect}"
23
23
  end
24
24
 
25
- def to_s
25
+ def description
26
26
  "have text #{expected.inspect}"
27
27
  end
28
28
 
@@ -21,7 +21,7 @@ module Spec
21
21
  "expected not to include text #{expected.inspect}"
22
22
  end
23
23
 
24
- def to_s
24
+ def description
25
25
  "include text #{expected.inspect}"
26
26
  end
27
27
 
@@ -51,4 +51,4 @@ module Spec
51
51
 
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -11,7 +11,11 @@ module Spec
11
11
  @request = request
12
12
  end
13
13
 
14
- def matches?(response)
14
+ def matches?(response_or_controller)
15
+ response = response_or_controller.respond_to?(:response) ?
16
+ response_or_controller.response :
17
+ response_or_controller
18
+
15
19
  @redirected = response.redirect?
16
20
  @actual = response.redirect_url
17
21
  return false unless @redirected
@@ -55,7 +59,7 @@ module Spec
55
59
 
56
60
  def query_hash(url)
57
61
  query = url.split("?", 2)[1] || ""
58
- QueryParameterParser.parse_query_parameters(query, @request)
62
+ Rack::Utils.parse_query(query)
59
63
  end
60
64
 
61
65
  def with(options)
@@ -95,18 +99,6 @@ module Spec
95
99
  def description
96
100
  "redirect to #{@expected.inspect}"
97
101
  end
98
-
99
- class QueryParameterParser
100
- def self.parse_query_parameters(query, request)
101
- if defined?(CGIMethods)
102
- CGIMethods.parse_query_parameters(query)
103
- elsif defined?(ActionController::RequestParser)
104
- ActionController::RequestParser.parse_query_parameters(query)
105
- else
106
- request.class.parse_query_parameters(query)
107
- end
108
- end
109
- end
110
102
  end
111
103
 
112
104
  # :call-seq:
@@ -9,7 +9,11 @@ module Spec
9
9
  @expected = expected
10
10
  end
11
11
 
12
- def matches?(response)
12
+ def matches?(response_or_controller)
13
+ response = response_or_controller.respond_to?(:response) ?
14
+ response_or_controller.response :
15
+ response_or_controller
16
+
13
17
  if response.respond_to?(:rendered_file)
14
18
  @actual = response.rendered_file
15
19
  elsif response.respond_to?(:rendered)