rspec-rails 2.10.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Changelog.md +20 -2
- data/README.md +3 -3
- data/features/controller_specs/render_views.feature +1 -1
- data/features/helper_specs/helper_spec.feature +8 -8
- data/features/model_specs/transactional_examples.feature +1 -0
- data/features/routing_specs/README.md +1 -1
- data/features/routing_specs/route_to_matcher.feature +32 -0
- data/lib/generators/rspec.rb +1 -1
- data/lib/generators/rspec/install/install_generator.rb +1 -1
- data/lib/generators/rspec/install/templates/.rspec +1 -1
- data/lib/generators/rspec/install/templates/spec/spec_helper.rb +6 -0
- data/lib/generators/rspec/model/templates/fixtures.yml +1 -1
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +1 -6
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +1 -1
- data/lib/rspec/rails/matchers.rb +1 -1
- data/lib/rspec/rails/matchers/be_a_new.rb +6 -3
- data/lib/rspec/rails/matchers/be_new_record.rb +1 -2
- data/lib/rspec/rails/matchers/{render_template.rb → have_rendered.rb} +6 -5
- data/lib/rspec/rails/matchers/redirect_to.rb +5 -6
- data/lib/rspec/rails/matchers/routing_matchers.rb +17 -16
- data/lib/rspec/rails/mocks.rb +9 -12
- data/lib/rspec/rails/version.rb +1 -1
- data/spec/generators/rspec/model/model_generator_spec.rb +1 -1
- data/spec/rspec/rails/matchers/have_rendered_spec.rb +93 -0
- data/spec/rspec/rails/matchers/redirect_to_spec.rb +22 -21
- metadata +10 -10
- data/spec/rspec/rails/matchers/render_template_spec.rb +0 -91
data/Changelog.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
### 2.11.0 / 2012-07-07
|
2
|
+
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.10.1...v2.11.0)
|
3
|
+
|
4
|
+
Enhancements
|
5
|
+
|
6
|
+
* The generated `spec/spec_helper.rb` sets `config.order = "random"` so that
|
7
|
+
specs run in random order by default.
|
8
|
+
* rename `render_template` to `have_rendered` (and alias to `render_template`
|
9
|
+
for backward compatibility)
|
10
|
+
|
11
|
+
Bug fixes
|
12
|
+
|
13
|
+
* "uninitialized constant" errors are avoided when using using gems like
|
14
|
+
`rspec-rails-uncommitted` that define `Rspec::Rails` before `rspec-rails`
|
15
|
+
loads (Andy Lindeman)
|
16
|
+
|
1
17
|
### 2.10.1 / 2012-05-03
|
2
18
|
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.10.0...v2.10.1)
|
3
19
|
|
@@ -5,6 +21,8 @@ Bug fixes
|
|
5
21
|
|
6
22
|
* fix regression introduced in 2.10.0 that broke integration with Devise
|
7
23
|
(https://github.com/rspec/rspec-rails/issues/534)
|
24
|
+
* remove generation of helper specs when running the scaffold generator, as
|
25
|
+
Rails already does this (Jack Dempsey)
|
8
26
|
|
9
27
|
### 2.10.0 / 2012-05-03
|
10
28
|
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.9.0...v2.10.0)
|
@@ -24,7 +42,7 @@ Bug fixes
|
|
24
42
|
### 2.9.0 / 2012-03-17
|
25
43
|
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.8.1...v2.9.0)
|
26
44
|
|
27
|
-
|
45
|
+
Enhancements
|
28
46
|
|
29
47
|
* add description method to RouteToMatcher (John Wulff)
|
30
48
|
* Run "db:test:clone_structure" instead of "db:test:prepare" if Active Record's
|
@@ -90,7 +108,7 @@ you'll have to upgrade to rspec-rails-2.8.1 when you upgrade to rails >=
|
|
90
108
|
|
91
109
|
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.6.1...v2.7.0)
|
92
110
|
|
93
|
-
*
|
111
|
+
* Enhancements
|
94
112
|
* `ActiveRecord::Relation` can use the `=~` matcher (Andy Lindeman)
|
95
113
|
* Make generated controller spec more consistent with regard to ids
|
96
114
|
(Brent J. Nordquist)
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# rspec-rails-2
|
1
|
+
# rspec-rails-2 [](http://travis-ci.org/rspec/rspec-rails) [](https://codeclimate.com/github/rspec/rspec-rails)
|
2
2
|
|
3
3
|
rspec-2 for rails-3 with lightweight extensions to each
|
4
4
|
|
@@ -130,7 +130,7 @@ users like to use extension libraries like FactoryGirl and Capybara:
|
|
130
130
|
```ruby
|
131
131
|
describe "home page" do
|
132
132
|
it "displays the user's username after successful login" do
|
133
|
-
user =
|
133
|
+
user = FactoryGirl.create(:user, :username => "jdoe", :password => "secret")
|
134
134
|
visit "/login"
|
135
135
|
fill_in "Username", :with => "jdoe"
|
136
136
|
fill_in "Password", :with => "secret"
|
@@ -181,7 +181,7 @@ end
|
|
181
181
|
describe WidgetsController do
|
182
182
|
describe "GET index" do
|
183
183
|
it "assigns all widgets to @widgets" do
|
184
|
-
widget =
|
184
|
+
widget = FactoryGirl.create(:widget)
|
185
185
|
get :index
|
186
186
|
assigns(:widgets).should eq([widget])
|
187
187
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Feature: helper spec
|
2
|
-
|
2
|
+
|
3
3
|
Helper specs live in `spec/helpers`, or any example group with `:type =>
|
4
4
|
:helper`.
|
5
5
|
|
@@ -12,12 +12,12 @@ Feature: helper spec
|
|
12
12
|
on the `helper` object.
|
13
13
|
|
14
14
|
NOTE: helper methods defined in controllers are not included.
|
15
|
-
|
15
|
+
|
16
16
|
Scenario: helper method that returns a value
|
17
17
|
Given a file named "spec/helpers/application_helper_spec.rb" with:
|
18
18
|
"""
|
19
19
|
require "spec_helper"
|
20
|
-
|
20
|
+
|
21
21
|
describe ApplicationHelper do
|
22
22
|
describe "#page_title" do
|
23
23
|
it "returns the default title" do
|
@@ -36,7 +36,7 @@ Feature: helper spec
|
|
36
36
|
"""
|
37
37
|
When I run `rspec spec/helpers/application_helper_spec.rb`
|
38
38
|
Then the examples should all pass
|
39
|
-
|
39
|
+
|
40
40
|
Scenario: helper method that accesses an instance variable
|
41
41
|
Given a file named "spec/helpers/application_helper_spec.rb" with:
|
42
42
|
"""
|
@@ -68,10 +68,10 @@ Feature: helper spec
|
|
68
68
|
require "spec_helper"
|
69
69
|
|
70
70
|
describe WidgetsHelper do
|
71
|
-
describe "#
|
71
|
+
describe "#widget_title" do
|
72
72
|
it "includes the app name" do
|
73
|
-
assign(:title, "This
|
74
|
-
helper.
|
73
|
+
assign(:title, "This Widget")
|
74
|
+
helper.widget_title.should eq("The App: This Widget")
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -87,7 +87,7 @@ Feature: helper spec
|
|
87
87
|
And a file named "app/helpers/widgets_helper.rb" with:
|
88
88
|
"""
|
89
89
|
module WidgetsHelper
|
90
|
-
def
|
90
|
+
def widget_title
|
91
91
|
"#{app_name}: #{@title}"
|
92
92
|
end
|
93
93
|
end
|
@@ -56,3 +56,35 @@ Feature: route_to matcher
|
|
56
56
|
|
57
57
|
When I run `rspec spec/routing/widgets_routing_spec.rb`
|
58
58
|
Then the output should contain "1 failure"
|
59
|
+
|
60
|
+
Scenario: route spec for a namespaced route with shortcut specifier
|
61
|
+
Given a file named "spec/routing/admin_routing_spec.rb" with:
|
62
|
+
"""
|
63
|
+
require "spec_helper"
|
64
|
+
|
65
|
+
describe "routes for Widgets" do
|
66
|
+
it "routes /admin/accounts to the admin/accounts controller" do
|
67
|
+
get("/admin/accounts").
|
68
|
+
should route_to("admin/accounts#index")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
"""
|
72
|
+
|
73
|
+
When I run `rspec spec/routing/admin_routing_spec.rb`
|
74
|
+
Then the examples should all pass
|
75
|
+
|
76
|
+
Scenario: route spec for a namespaced route with verbose specifier
|
77
|
+
Given a file named "spec/routing/admin_routing_spec.rb" with:
|
78
|
+
"""
|
79
|
+
require "spec_helper"
|
80
|
+
|
81
|
+
describe "routes for Widgets" do
|
82
|
+
it "routes /admin/accounts to the admin/accounts controller" do
|
83
|
+
get("/admin/accounts").
|
84
|
+
should route_to(:controller => "admin/accounts", :action => "index")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
"""
|
88
|
+
|
89
|
+
When I run `rspec spec/routing/admin_routing_spec.rb`
|
90
|
+
Then the examples should all pass
|
data/lib/generators/rspec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'rails/generators/named_base'
|
|
2
2
|
|
3
3
|
module Rspec
|
4
4
|
module Generators
|
5
|
-
class Base < Rails::Generators::NamedBase
|
5
|
+
class Base < ::Rails::Generators::NamedBase
|
6
6
|
def self.source_root
|
7
7
|
@_rspec_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'rspec', generator_name, 'templates'))
|
8
8
|
end
|
@@ -1 +1 @@
|
|
1
|
-
--
|
1
|
+
--color
|
@@ -29,4 +29,10 @@ RSpec.configure do |config|
|
|
29
29
|
# automatically. This will be the default behavior in future versions of
|
30
30
|
# rspec-rails.
|
31
31
|
config.infer_base_class_for_anonymous_controllers = false
|
32
|
+
|
33
|
+
# Run specs in random order to surface order dependencies. If you find an
|
34
|
+
# order dependency and want to debug it, you can fix the order by providing
|
35
|
+
# the seed, which is printed after each run.
|
36
|
+
# --seed 1234
|
37
|
+
config.order = "random"
|
32
38
|
end
|
@@ -4,7 +4,7 @@ require 'rails/generators/resource_helpers'
|
|
4
4
|
module Rspec
|
5
5
|
module Generators
|
6
6
|
class ScaffoldGenerator < Base
|
7
|
-
include Rails::Generators::ResourceHelpers
|
7
|
+
include ::Rails::Generators::ResourceHelpers
|
8
8
|
source_paths << File.expand_path("../../helper/templates", __FILE__)
|
9
9
|
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
10
10
|
|
@@ -35,11 +35,6 @@ module Rspec
|
|
35
35
|
copy_view :show
|
36
36
|
end
|
37
37
|
|
38
|
-
# Invoke the helper using the controller name (pluralized)
|
39
|
-
hook_for :helper, :as => :scaffold do |invoked|
|
40
|
-
invoke invoked, [ controller_name ]
|
41
|
-
end
|
42
|
-
|
43
38
|
def generate_routing_spec
|
44
39
|
return unless options[:routing_specs]
|
45
40
|
|
@@ -26,7 +26,7 @@ describe <%= controller_class_name %>Controller do
|
|
26
26
|
def valid_attributes
|
27
27
|
{}
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
# This should return the minimal set of values that should be in the session
|
31
31
|
# in order to pass any filters (e.g. authentication) defined in
|
32
32
|
# <%= controller_class_name %>Controller. Be sure to keep this updated too.
|
data/lib/rspec/rails/matchers.rb
CHANGED
@@ -17,7 +17,7 @@ rescue LoadError
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
require 'rspec/rails/matchers/
|
20
|
+
require 'rspec/rails/matchers/have_rendered'
|
21
21
|
require 'rspec/rails/matchers/redirect_to'
|
22
22
|
require 'rspec/rails/matchers/routing_matchers'
|
23
23
|
require 'rspec/rails/matchers/be_new_record'
|
@@ -1,10 +1,13 @@
|
|
1
1
|
module RSpec::Rails::Matchers
|
2
|
-
class BeANew
|
3
|
-
|
2
|
+
class BeANew < RSpec::Matchers::BuiltIn::BaseMatcher
|
3
|
+
|
4
|
+
def initialize(expected)
|
5
|
+
@expected = expected
|
6
|
+
end
|
4
7
|
|
5
8
|
# @api private
|
6
9
|
def matches?(actual)
|
7
|
-
|
10
|
+
@actual = actual
|
8
11
|
actual.is_a?(expected) && actual.new_record? && attributes_match?(actual)
|
9
12
|
end
|
10
13
|
|
@@ -1,10 +1,9 @@
|
|
1
1
|
module RSpec::Rails::Matchers
|
2
2
|
module RenderTemplate
|
3
|
-
class RenderTemplateMatcher
|
4
|
-
include RSpec::Matchers::BuiltIn::BaseMatcher
|
3
|
+
class RenderTemplateMatcher < RSpec::Matchers::BuiltIn::BaseMatcher
|
5
4
|
|
6
5
|
def initialize(scope, expected, message=nil)
|
7
|
-
|
6
|
+
@expected = Symbol === expected ? expected.to_s : expected
|
8
7
|
@message = message
|
9
8
|
@scope = scope
|
10
9
|
end
|
@@ -31,9 +30,11 @@ module RSpec::Rails::Matchers
|
|
31
30
|
#
|
32
31
|
# @example
|
33
32
|
#
|
34
|
-
# response.should
|
35
|
-
def
|
33
|
+
# response.should have_rendered("new")
|
34
|
+
def have_rendered(options, message=nil)
|
36
35
|
RenderTemplateMatcher.new(self, options, message)
|
37
36
|
end
|
37
|
+
|
38
|
+
alias_method :render_template, :have_rendered
|
38
39
|
end
|
39
40
|
end
|
@@ -1,17 +1,16 @@
|
|
1
1
|
module RSpec::Rails::Matchers
|
2
2
|
module RedirectTo
|
3
|
-
class RedirectTo
|
4
|
-
include RSpec::Matchers::BuiltIn::BaseMatcher
|
3
|
+
class RedirectTo < RSpec::Matchers::BuiltIn::BaseMatcher
|
5
4
|
|
6
5
|
def initialize(scope, expected)
|
7
|
-
|
6
|
+
@expected = expected
|
8
7
|
@scope = scope
|
9
8
|
end
|
10
9
|
|
11
10
|
# @api private
|
12
|
-
def matches?(
|
11
|
+
def matches?(_)
|
13
12
|
match_unless_raises ActiveSupport::TestCase::Assertion do
|
14
|
-
@scope.assert_redirected_to(expected)
|
13
|
+
@scope.assert_redirected_to(@expected)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
@@ -22,7 +21,7 @@ module RSpec::Rails::Matchers
|
|
22
21
|
|
23
22
|
# @api private
|
24
23
|
def failure_message_for_should_not
|
25
|
-
"expected not to redirect to #{expected.inspect}, but did"
|
24
|
+
"expected not to redirect to #{@expected.inspect}, but did"
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
@@ -2,33 +2,28 @@ module RSpec::Rails::Matchers
|
|
2
2
|
module RoutingMatchers
|
3
3
|
extend RSpec::Matchers::DSL
|
4
4
|
|
5
|
-
class RouteToMatcher
|
6
|
-
include RSpec::Matchers::BuiltIn::BaseMatcher
|
5
|
+
class RouteToMatcher < RSpec::Matchers::BuiltIn::BaseMatcher
|
7
6
|
|
8
7
|
def initialize(scope, *expected)
|
9
8
|
@scope = scope
|
10
|
-
@
|
9
|
+
@expected = expected[1] || {}
|
11
10
|
if Hash === expected[0]
|
12
|
-
@
|
11
|
+
@expected.merge!(expected[0])
|
13
12
|
else
|
14
13
|
controller, action = expected[0].split('#')
|
15
|
-
@
|
14
|
+
@expected.merge!(:controller => controller, :action => action)
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
19
|
-
def description
|
20
|
-
"route #{@verb_to_path_map.inspect} to #{@expected_options.inspect}"
|
21
|
-
end
|
22
|
-
|
23
18
|
# @api private
|
24
19
|
def matches?(verb_to_path_map)
|
25
|
-
@verb_to_path_map = verb_to_path_map
|
20
|
+
@actual = @verb_to_path_map = verb_to_path_map
|
26
21
|
# assert_recognizes does not consider ActionController::RoutingError an
|
27
22
|
# assertion failure, so we have to capture that and Assertion here.
|
28
23
|
match_unless_raises ActiveSupport::TestCase::Assertion, ActionController::RoutingError do
|
29
24
|
path, query = *verb_to_path_map.values.first.split('?')
|
30
25
|
@scope.assert_recognizes(
|
31
|
-
@
|
26
|
+
@expected,
|
32
27
|
{:method => verb_to_path_map.keys.first, :path => path},
|
33
28
|
Rack::Utils::parse_query(query)
|
34
29
|
)
|
@@ -39,6 +34,10 @@ module RSpec::Rails::Matchers
|
|
39
34
|
def failure_message_for_should
|
40
35
|
rescued_exception.message
|
41
36
|
end
|
37
|
+
|
38
|
+
def description
|
39
|
+
"route #{@actual.inspect} to #{@expected.inspect}"
|
40
|
+
end
|
42
41
|
end
|
43
42
|
|
44
43
|
# Delegates to `assert_recognizes`. Supports short-hand controller/action
|
@@ -58,8 +57,7 @@ module RSpec::Rails::Matchers
|
|
58
57
|
RouteToMatcher.new(self, *expected)
|
59
58
|
end
|
60
59
|
|
61
|
-
class BeRoutableMatcher
|
62
|
-
include RSpec::Matchers::BuiltIn::BaseMatcher
|
60
|
+
class BeRoutableMatcher < RSpec::Matchers::BuiltIn::BaseMatcher
|
63
61
|
|
64
62
|
def initialize(scope)
|
65
63
|
@scope = scope
|
@@ -67,7 +65,7 @@ module RSpec::Rails::Matchers
|
|
67
65
|
|
68
66
|
# @api private
|
69
67
|
def matches?(path)
|
70
|
-
|
68
|
+
@actual = path
|
71
69
|
match_unless_raises ActionController::RoutingError do
|
72
70
|
@routing_options = @scope.routes.recognize_path(
|
73
71
|
path.values.first, :method => path.keys.first
|
@@ -75,9 +73,12 @@ module RSpec::Rails::Matchers
|
|
75
73
|
end
|
76
74
|
end
|
77
75
|
|
78
|
-
|
76
|
+
def failure_message_for_should
|
77
|
+
"expected #{@actual.inspect} to be routable"
|
78
|
+
end
|
79
|
+
|
79
80
|
def failure_message_for_should_not
|
80
|
-
"expected #{actual.inspect} not to be routable, but it routes to #{@routing_options.inspect}"
|
81
|
+
"expected #{@actual.inspect} not to be routable, but it routes to #{@routing_options.inspect}"
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
data/lib/rspec/rails/mocks.rb
CHANGED
@@ -114,11 +114,11 @@ EOM
|
|
114
114
|
def @object.is_a?(other)
|
115
115
|
#{model_class}.ancestors.include?(other)
|
116
116
|
end unless #{stubs.has_key?(:is_a?)}
|
117
|
-
|
117
|
+
|
118
118
|
def @object.kind_of?(other)
|
119
119
|
#{model_class}.ancestors.include?(other)
|
120
120
|
end unless #{stubs.has_key?(:kind_of?)}
|
121
|
-
|
121
|
+
|
122
122
|
def @object.instance_of?(other)
|
123
123
|
other == #{model_class}
|
124
124
|
end unless #{stubs.has_key?(:instance_of?)}
|
@@ -130,7 +130,7 @@ EOM
|
|
130
130
|
def @object.respond_to?(method_name, include_private=false)
|
131
131
|
__model_class_has_column?(method_name) ? true : super
|
132
132
|
end unless #{stubs.has_key?(:respond_to?)}
|
133
|
-
|
133
|
+
|
134
134
|
def @object.method_missing(m, *a, &b)
|
135
135
|
respond_to?(m) ? null_object? ? self : nil : super
|
136
136
|
end
|
@@ -138,7 +138,7 @@ EOM
|
|
138
138
|
def @object.class
|
139
139
|
#{model_class}
|
140
140
|
end unless #{stubs.has_key?(:class)}
|
141
|
-
|
141
|
+
|
142
142
|
def @object.to_s
|
143
143
|
"#{model_class.name}_#{to_param}"
|
144
144
|
end unless #{stubs.has_key?(:to_s)}
|
@@ -181,12 +181,12 @@ EOM
|
|
181
181
|
end
|
182
182
|
|
183
183
|
# Creates an instance of `Model` with `to_param` stubbed using a
|
184
|
-
# generated value that is unique to each object
|
184
|
+
# generated value that is unique to each object. If `Model` is an
|
185
185
|
# `ActiveRecord` model, it is prohibited from accessing the database*.
|
186
186
|
#
|
187
|
-
# For each key in `
|
188
|
-
# (determined by
|
189
|
-
# the model does not have a matching attribute, the key/value pair is
|
187
|
+
# For each key in `stubs`, if the model has a matching attribute
|
188
|
+
# (determined by `respond_to?`) it is simply assigned the submitted values.
|
189
|
+
# If the model does not have a matching attribute, the key/value pair is
|
190
190
|
# assigned as a stub return value using RSpec's mocking/stubbing
|
191
191
|
# framework.
|
192
192
|
#
|
@@ -240,7 +240,4 @@ EOM
|
|
240
240
|
end
|
241
241
|
end
|
242
242
|
|
243
|
-
RSpec.
|
244
|
-
c.include RSpec::Rails::Mocks
|
245
|
-
end
|
246
|
-
|
243
|
+
RSpec.configuration.include RSpec::Rails::Mocks
|
data/lib/rspec/rails/version.rb
CHANGED
@@ -33,7 +33,7 @@ describe Rspec::Generators::ModelGenerator do
|
|
33
33
|
describe 'the fixtures' do
|
34
34
|
subject { file('spec/fixtures/posts.yml') }
|
35
35
|
|
36
|
-
it { should contain(Regexp.new('# Read about fixtures at http://
|
36
|
+
it { should contain(Regexp.new('# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html')) }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
%w[have_rendered render_template].each do |template_expectation|
|
4
|
+
describe template_expectation do
|
5
|
+
include RSpec::Rails::Matchers::RenderTemplate
|
6
|
+
let(:response) { ActionController::TestResponse.new }
|
7
|
+
|
8
|
+
context "given a hash" do
|
9
|
+
it "delegates to assert_template" do
|
10
|
+
self.should_receive(:assert_template).with({:this => "hash"}, "this message")
|
11
|
+
expect("response").to send(template_expectation, {:this => "hash"}, "this message")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "given a string" do
|
16
|
+
it "delegates to assert_template" do
|
17
|
+
self.should_receive(:assert_template).with("this string", "this message")
|
18
|
+
expect("response").to send(template_expectation, "this string", "this message")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "given a symbol" do
|
23
|
+
it "converts to_s and delegates to assert_template" do
|
24
|
+
self.should_receive(:assert_template).with("template_name", "this message")
|
25
|
+
expect("response").to send(template_expectation, :template_name, "this message")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "with should" do
|
30
|
+
context "when assert_template passes" do
|
31
|
+
it "passes" do
|
32
|
+
self.stub!(:assert_template)
|
33
|
+
expect do
|
34
|
+
expect(response).to send(template_expectation, "template_name")
|
35
|
+
end.to_not raise_exception
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "when assert_template fails" do
|
40
|
+
it "uses failure message from assert_template" do
|
41
|
+
self.stub!(:assert_template) do
|
42
|
+
raise ActiveSupport::TestCase::Assertion.new("this message")
|
43
|
+
end
|
44
|
+
expect do
|
45
|
+
expect(response).to send(template_expectation, "template_name")
|
46
|
+
end.to raise_error("this message")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "when fails due to some other exception" do
|
51
|
+
it "raises that exception" do
|
52
|
+
self.stub!(:assert_template) do
|
53
|
+
raise "oops"
|
54
|
+
end
|
55
|
+
expect do
|
56
|
+
expect(response).to send(template_expectation, "template_name")
|
57
|
+
end.to raise_exception("oops")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "with should_not" do
|
63
|
+
context "when assert_template fails" do
|
64
|
+
it "passes" do
|
65
|
+
def assert_template(*)
|
66
|
+
raise ActiveSupport::TestCase::Assertion.new("this message")
|
67
|
+
end
|
68
|
+
expect do
|
69
|
+
expect(response).to_not send(template_expectation, "template_name")
|
70
|
+
end.to_not raise_exception
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when assert_template passes" do
|
75
|
+
it "fails with custom failure message" do
|
76
|
+
def assert_template(*); end
|
77
|
+
expect do
|
78
|
+
expect(response).to_not send(template_expectation, "template_name")
|
79
|
+
end.to raise_error(/expected not to render \"template_name\", but did/)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "when fails due to some other exception" do
|
84
|
+
it "raises that exception" do
|
85
|
+
def assert_template(*); raise "oops"; end
|
86
|
+
expect do
|
87
|
+
expect(response).to_not send(template_expectation, "template_name")
|
88
|
+
end.to raise_exception("oops")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -6,15 +6,11 @@ describe "redirect_to" do
|
|
6
6
|
|
7
7
|
let(:response) { ActionController::TestResponse.new }
|
8
8
|
|
9
|
-
it "delegates to assert_redirected_to" do
|
10
|
-
self.should_receive(:assert_redirected_to).with("destination")
|
11
|
-
"response".should redirect_to("destination")
|
12
|
-
end
|
13
|
-
|
14
9
|
context "with should" do
|
15
10
|
context "when assert_redirected_to passes" do
|
11
|
+
def assert_redirected_to(*); end
|
12
|
+
|
16
13
|
it "passes" do
|
17
|
-
self.stub!(:assert_redirected_to)
|
18
14
|
expect do
|
19
15
|
response.should redirect_to("destination")
|
20
16
|
end.to_not raise_exception
|
@@ -22,21 +18,23 @@ describe "redirect_to" do
|
|
22
18
|
end
|
23
19
|
|
24
20
|
context "when assert_redirected_to fails" do
|
21
|
+
def assert_redirected_to(*)
|
22
|
+
raise ActiveSupport::TestCase::Assertion.new("this message")
|
23
|
+
end
|
24
|
+
|
25
25
|
it "uses failure message from assert_redirected_to" do
|
26
|
-
self.stub!(:assert_redirected_to) do
|
27
|
-
raise ActiveSupport::TestCase::Assertion.new("this message")
|
28
|
-
end
|
29
26
|
expect do
|
30
27
|
response.should redirect_to("destination")
|
31
|
-
end.to
|
28
|
+
end.to raise_exception("this message")
|
32
29
|
end
|
33
30
|
end
|
34
31
|
|
35
32
|
context "when fails due to some other exception" do
|
33
|
+
def assert_redirected_to(*)
|
34
|
+
raise "oops"
|
35
|
+
end
|
36
|
+
|
36
37
|
it "raises that exception" do
|
37
|
-
self.stub!(:assert_redirected_to) do
|
38
|
-
raise "oops"
|
39
|
-
end
|
40
38
|
expect do
|
41
39
|
response.should redirect_to("destination")
|
42
40
|
end.to raise_exception("oops")
|
@@ -46,10 +44,11 @@ describe "redirect_to" do
|
|
46
44
|
|
47
45
|
context "with should_not" do
|
48
46
|
context "when assert_redirected_to fails" do
|
47
|
+
def assert_redirected_to(*)
|
48
|
+
raise ActiveSupport::TestCase::Assertion.new("this message")
|
49
|
+
end
|
50
|
+
|
49
51
|
it "passes" do
|
50
|
-
self.stub!(:assert_redirected_to) do
|
51
|
-
raise ActiveSupport::TestCase::Assertion.new("this message")
|
52
|
-
end
|
53
52
|
expect do
|
54
53
|
response.should_not redirect_to("destination")
|
55
54
|
end.to_not raise_exception
|
@@ -57,19 +56,21 @@ describe "redirect_to" do
|
|
57
56
|
end
|
58
57
|
|
59
58
|
context "when assert_redirected_to passes" do
|
59
|
+
def assert_redirected_to(*); end
|
60
|
+
|
60
61
|
it "fails with custom failure message" do
|
61
|
-
self.stub!(:assert_redirected_to)
|
62
62
|
expect do
|
63
63
|
response.should_not redirect_to("destination")
|
64
|
-
end.to
|
64
|
+
end.to raise_exception(/expected not to redirect to \"destination\", but did/)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
context "when fails due to some other exception" do
|
69
|
+
def assert_redirected_to(*)
|
70
|
+
raise "oops"
|
71
|
+
end
|
72
|
+
|
69
73
|
it "raises that exception" do
|
70
|
-
self.stub!(:assert_redirected_to) do
|
71
|
-
raise "oops"
|
72
|
-
end
|
73
74
|
expect do
|
74
75
|
response.should_not redirect_to("destination")
|
75
76
|
end.to raise_exception("oops")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.11.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 2.
|
69
|
+
version: 2.11.0
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 2.
|
77
|
+
version: 2.11.0
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: rake
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -209,9 +209,9 @@ files:
|
|
209
209
|
- lib/rspec/rails/matchers/be_a_new.rb
|
210
210
|
- lib/rspec/rails/matchers/be_new_record.rb
|
211
211
|
- lib/rspec/rails/matchers/have_extension.rb
|
212
|
+
- lib/rspec/rails/matchers/have_rendered.rb
|
212
213
|
- lib/rspec/rails/matchers/redirect_to.rb
|
213
214
|
- lib/rspec/rails/matchers/relation_match_array.rb
|
214
|
-
- lib/rspec/rails/matchers/render_template.rb
|
215
215
|
- lib/rspec/rails/matchers/routing_matchers.rb
|
216
216
|
- lib/rspec/rails/mocks.rb
|
217
217
|
- lib/rspec/rails/module_inclusion.rb
|
@@ -290,9 +290,9 @@ files:
|
|
290
290
|
- spec/rspec/rails/matchers/be_new_record_spec.rb
|
291
291
|
- spec/rspec/rails/matchers/be_routable_spec.rb
|
292
292
|
- spec/rspec/rails/matchers/errors_on_spec.rb
|
293
|
+
- spec/rspec/rails/matchers/have_rendered_spec.rb
|
293
294
|
- spec/rspec/rails/matchers/redirect_to_spec.rb
|
294
295
|
- spec/rspec/rails/matchers/relation_match_array_spec.rb
|
295
|
-
- spec/rspec/rails/matchers/render_template_spec.rb
|
296
296
|
- spec/rspec/rails/matchers/route_to_spec.rb
|
297
297
|
- spec/rspec/rails/mocks/mock_model_spec.rb
|
298
298
|
- spec/rspec/rails/mocks/stub_model_spec.rb
|
@@ -318,7 +318,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
318
318
|
version: '0'
|
319
319
|
segments:
|
320
320
|
- 0
|
321
|
-
hash: -
|
321
|
+
hash: -673310072700950015
|
322
322
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
323
323
|
none: false
|
324
324
|
requirements:
|
@@ -327,13 +327,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
327
|
version: '0'
|
328
328
|
segments:
|
329
329
|
- 0
|
330
|
-
hash: -
|
330
|
+
hash: -673310072700950015
|
331
331
|
requirements: []
|
332
332
|
rubyforge_project: rspec
|
333
333
|
rubygems_version: 1.8.24
|
334
334
|
signing_key:
|
335
335
|
specification_version: 3
|
336
|
-
summary: rspec-rails-2.
|
336
|
+
summary: rspec-rails-2.11.0
|
337
337
|
test_files:
|
338
338
|
- features/Autotest.md
|
339
339
|
- features/Generators.md
|
@@ -399,9 +399,9 @@ test_files:
|
|
399
399
|
- spec/rspec/rails/matchers/be_new_record_spec.rb
|
400
400
|
- spec/rspec/rails/matchers/be_routable_spec.rb
|
401
401
|
- spec/rspec/rails/matchers/errors_on_spec.rb
|
402
|
+
- spec/rspec/rails/matchers/have_rendered_spec.rb
|
402
403
|
- spec/rspec/rails/matchers/redirect_to_spec.rb
|
403
404
|
- spec/rspec/rails/matchers/relation_match_array_spec.rb
|
404
|
-
- spec/rspec/rails/matchers/render_template_spec.rb
|
405
405
|
- spec/rspec/rails/matchers/route_to_spec.rb
|
406
406
|
- spec/rspec/rails/mocks/mock_model_spec.rb
|
407
407
|
- spec/rspec/rails/mocks/stub_model_spec.rb
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "render_template" do
|
4
|
-
include RSpec::Rails::Matchers::RenderTemplate
|
5
|
-
let(:response) { ActionController::TestResponse.new }
|
6
|
-
|
7
|
-
context "given a hash" do
|
8
|
-
it "delegates to assert_template" do
|
9
|
-
self.should_receive(:assert_template).with({:this => "hash"}, "this message")
|
10
|
-
"response".should render_template({:this => "hash"}, "this message")
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context "given a string" do
|
15
|
-
it "delegates to assert_template" do
|
16
|
-
self.should_receive(:assert_template).with("this string", "this message")
|
17
|
-
"response".should render_template("this string", "this message")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
context "given a symbol" do
|
22
|
-
it "converts to_s and delegates to assert_template" do
|
23
|
-
self.should_receive(:assert_template).with("template_name", "this message")
|
24
|
-
"response".should render_template(:template_name, "this message")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "with should" do
|
29
|
-
context "when assert_template passes" do
|
30
|
-
it "passes" do
|
31
|
-
self.stub!(:assert_template)
|
32
|
-
expect do
|
33
|
-
response.should render_template("template_name")
|
34
|
-
end.to_not raise_exception
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when assert_template fails" do
|
39
|
-
it "uses failure message from assert_template" do
|
40
|
-
self.stub!(:assert_template) do
|
41
|
-
raise ActiveSupport::TestCase::Assertion.new("this message")
|
42
|
-
end
|
43
|
-
expect do
|
44
|
-
response.should render_template("template_name")
|
45
|
-
end.to raise_error("this message")
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when fails due to some other exception" do
|
50
|
-
it "raises that exception" do
|
51
|
-
self.stub!(:assert_template) do
|
52
|
-
raise "oops"
|
53
|
-
end
|
54
|
-
expect do
|
55
|
-
response.should render_template("template_name")
|
56
|
-
end.to raise_exception("oops")
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "with should_not" do
|
62
|
-
context "when assert_template fails" do
|
63
|
-
it "passes" do
|
64
|
-
def assert_template(*)
|
65
|
-
raise ActiveSupport::TestCase::Assertion.new("this message")
|
66
|
-
end
|
67
|
-
expect do
|
68
|
-
response.should_not render_template("template_name")
|
69
|
-
end.to_not raise_exception
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when assert_template passes" do
|
74
|
-
it "fails with custom failure message" do
|
75
|
-
def assert_template(*); end
|
76
|
-
expect do
|
77
|
-
response.should_not render_template("template_name")
|
78
|
-
end.to raise_error(/expected not to render \"template_name\", but did/)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context "when fails due to some other exception" do
|
83
|
-
it "raises that exception" do
|
84
|
-
def assert_template(*); raise "oops"; end
|
85
|
-
expect do
|
86
|
-
response.should_not render_template("template_name")
|
87
|
-
end.to raise_exception("oops")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|