rspec-rails 2.8.0.rc1 → 2.8.0.rc2
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/License.txt +22 -0
- data/README.md +253 -119
- data/features/README.md +0 -2
- data/features/Upgrade.md +1 -1
- data/lib/generators/rspec/install/templates/spec/spec_helper.rb +1 -1
- data/lib/generators/rspec/integration/integration_generator.rb +1 -0
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +1 -0
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +23 -16
- data/lib/rspec/rails/adapters.rb +25 -13
- data/lib/rspec/rails/example/controller_example_group.rb +65 -122
- data/lib/rspec/rails/example/helper_example_group.rb +11 -36
- data/lib/rspec/rails/example/mailer_example_group.rb +1 -1
- data/lib/rspec/rails/example/rails_example_group.rb +5 -0
- data/lib/rspec/rails/example/request_example_group.rb +4 -19
- data/lib/rspec/rails/example/routing_example_group.rb +8 -10
- data/lib/rspec/rails/example/view_example_group.rb +21 -35
- data/lib/rspec/rails/extensions/active_record/base.rb +15 -12
- data/lib/rspec/rails/fixture_support.rb +1 -1
- data/lib/rspec/rails/matchers/be_a_new.rb +63 -30
- data/lib/rspec/rails/matchers/be_new_record.rb +18 -3
- data/lib/rspec/rails/matchers/have_extension.rb +26 -14
- data/lib/rspec/rails/matchers/redirect_to.rb +26 -7
- data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
- data/lib/rspec/rails/matchers/render_template.rb +27 -8
- data/lib/rspec/rails/matchers/routing_matchers.rb +72 -24
- data/lib/rspec/rails/mocks.rb +42 -34
- data/lib/rspec/rails/module_inclusion.rb +2 -1
- data/lib/rspec/rails/version.rb +1 -1
- data/lib/rspec/rails/view_assigns.rb +31 -34
- data/lib/rspec/rails/view_rendering.rb +10 -6
- data/spec/rspec/rails/example/controller_example_group_spec.rb +2 -2
- data/spec/rspec/rails/example/helper_example_group_spec.rb +5 -5
- data/spec/rspec/rails/example/view_example_group_spec.rb +5 -5
- data/spec/rspec/rails/matchers/be_a_new_spec.rb +2 -0
- data/spec/rspec/rails/matchers/be_new_record_spec.rb +2 -0
- data/spec/rspec/rails/matchers/render_template_spec.rb +3 -5
- data/spec/rspec/rails/mocks/mock_model_spec.rb +28 -0
- metadata +22 -19
data/lib/rspec/rails/version.rb
CHANGED
@@ -1,46 +1,43 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Rails
|
3
3
|
module ViewAssigns
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def assign(key, value)
|
14
|
-
_encapsulated_assigns[key] = value
|
15
|
-
end
|
16
|
-
|
17
|
-
def view_assigns
|
18
|
-
begin
|
19
|
-
# TODO: _assigns was deprecated in favor of view_assigns after
|
20
|
-
# Rails-3.0.0 was released. Since we are not able to predict when
|
21
|
-
# the _assigns/view_assigns patch will be released (I thought it
|
22
|
-
# would have been in 3.0.1, but 3.0.1 bypassed this change for a
|
23
|
-
# security fix), this bit ensures that we do the right thing without
|
24
|
-
# knowing anything about the Rails version we are dealing with.
|
25
|
-
#
|
26
|
-
# Once that change _is_ released, this can be changed to something
|
27
|
-
# that checks for the Rails version when the module is being
|
28
|
-
# interpreted, as it was before commit dd0095.
|
29
|
-
super.merge(_encapsulated_assigns)
|
30
|
-
rescue
|
31
|
-
_assigns
|
32
|
-
end
|
33
|
-
end
|
4
|
+
# Assigns a value to an instance variable in the scope of the
|
5
|
+
# view being rendered.
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
#
|
9
|
+
# assign(:widget, stub_model(Widget))
|
10
|
+
def assign(key, value)
|
11
|
+
_encapsulated_assigns[key] = value
|
12
|
+
end
|
34
13
|
|
35
|
-
|
14
|
+
def view_assigns
|
15
|
+
begin
|
16
|
+
# TODO: _assigns was deprecated in favor of view_assigns after
|
17
|
+
# Rails-3.0.0 was released. Since we are not able to predict when
|
18
|
+
# the _assigns/view_assigns patch will be released (I thought it
|
19
|
+
# would have been in 3.0.1, but 3.0.1 bypassed this change for a
|
20
|
+
# security fix), this bit ensures that we do the right thing without
|
21
|
+
# knowing anything about the Rails version we are dealing with.
|
22
|
+
#
|
23
|
+
# Once that change _is_ released, this can be changed to something
|
24
|
+
# that checks for the Rails version when the module is being
|
25
|
+
# interpreted, as it was before commit dd0095.
|
36
26
|
super.merge(_encapsulated_assigns)
|
27
|
+
rescue
|
28
|
+
_assigns
|
37
29
|
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# @api private
|
33
|
+
def _assigns
|
34
|
+
super.merge(_encapsulated_assigns)
|
35
|
+
end
|
38
36
|
|
39
37
|
private
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
end
|
39
|
+
def _encapsulated_assigns
|
40
|
+
@_encapsulated_assigns ||= {}
|
44
41
|
end
|
45
42
|
|
46
43
|
end
|
@@ -34,25 +34,26 @@ module RSpec
|
|
34
34
|
metadata[:rspec_rails] = metadata[:rspec_rails] ? metadata[:rspec_rails].dup : {}
|
35
35
|
end
|
36
36
|
|
37
|
-
#
|
37
|
+
# @see RSpec::Rails::ControllerExampleGroup
|
38
38
|
def render_views(true_or_false=true)
|
39
39
|
metadata_for_rspec_rails[:render_views] = true_or_false
|
40
40
|
end
|
41
41
|
|
42
|
+
# @deprecated Use `render_views` instead.
|
42
43
|
def integrate_views
|
43
44
|
RSpec.deprecate("integrate_views","render_views")
|
44
45
|
render_views
|
45
46
|
end
|
46
47
|
|
48
|
+
# @api private
|
47
49
|
def render_views?
|
48
50
|
metadata_for_rspec_rails[:render_views] || RSpec.configuration.render_views?
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
54
|
+
# @api private
|
55
|
+
def render_views?
|
56
|
+
self.class.render_views? || !controller.class.respond_to?(:view_paths)
|
56
57
|
end
|
57
58
|
|
58
59
|
# Delegates find_all to the submitted path set and then returns templates
|
@@ -64,6 +65,7 @@ module RSpec
|
|
64
65
|
@original_path_set = original_path_set
|
65
66
|
end
|
66
67
|
|
68
|
+
# @api private
|
67
69
|
def find_all(*args)
|
68
70
|
original_path_set.find_all(*args).collect do |template|
|
69
71
|
::ActionView::Template.new(
|
@@ -80,15 +82,18 @@ module RSpec
|
|
80
82
|
end
|
81
83
|
|
82
84
|
module EmptyTemplates
|
85
|
+
# @api private
|
83
86
|
def prepend_view_path(new_path)
|
84
87
|
lookup_context.view_paths.unshift(*_path_decorator(new_path))
|
85
88
|
end
|
86
89
|
|
90
|
+
# @api private
|
87
91
|
def append_view_path(new_path)
|
88
92
|
lookup_context.view_paths.push(*_path_decorator(new_path))
|
89
93
|
end
|
90
94
|
|
91
95
|
private
|
96
|
+
|
92
97
|
def _path_decorator(path)
|
93
98
|
EmptyTemplatePathSetDecorator.new(::ActionView::Base::process_view_paths(path))
|
94
99
|
end
|
@@ -109,7 +114,6 @@ module RSpec
|
|
109
114
|
end
|
110
115
|
end
|
111
116
|
end
|
112
|
-
|
113
117
|
end
|
114
118
|
end
|
115
119
|
end
|
@@ -84,7 +84,7 @@ module RSpec::Rails
|
|
84
84
|
RSpec.configuration.stub(:infer_base_class_for_anonymous_controllers?).and_return(true)
|
85
85
|
group.controller { }
|
86
86
|
|
87
|
-
controller_class = group.metadata[:example_group][:
|
87
|
+
controller_class = group.metadata[:example_group][:described_class]
|
88
88
|
controller_class.superclass.should eq(group.controller_class)
|
89
89
|
end
|
90
90
|
|
@@ -92,7 +92,7 @@ module RSpec::Rails
|
|
92
92
|
RSpec.configuration.stub(:infer_base_class_for_anonymous_controllers?).and_return(false)
|
93
93
|
group.controller { }
|
94
94
|
|
95
|
-
controller_class = group.metadata[:example_group][:
|
95
|
+
controller_class = group.metadata[:example_group][:described_class]
|
96
96
|
controller_class.superclass.should eq(ApplicationController)
|
97
97
|
end
|
98
98
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
module RSpec::Rails
|
4
|
-
describe HelperExampleGroup
|
4
|
+
describe HelperExampleGroup do
|
5
5
|
module ::FoosHelper; end
|
6
6
|
subject { HelperExampleGroup }
|
7
7
|
|
@@ -9,8 +9,8 @@ module RSpec::Rails
|
|
9
9
|
it { should be_included_in_files_in('.\\spec\\helpers\\') }
|
10
10
|
|
11
11
|
it "provides a controller_path based on the helper module's name" do
|
12
|
-
helper_spec = Object.new.extend HelperExampleGroup
|
13
|
-
helper_spec.stub_chain(:example, :example_group, :
|
12
|
+
helper_spec = Object.new.extend HelperExampleGroup
|
13
|
+
helper_spec.stub_chain(:example, :example_group, :described_class).and_return(FoosHelper)
|
14
14
|
helper_spec.__send__(:_controller_path).should == "foos"
|
15
15
|
end
|
16
16
|
|
@@ -23,7 +23,7 @@ module RSpec::Rails
|
|
23
23
|
|
24
24
|
describe "#helper" do
|
25
25
|
it "returns the instance of AV::Base provided by AV::TC::Behavior" do
|
26
|
-
helper_spec = Object.new.extend HelperExampleGroup
|
26
|
+
helper_spec = Object.new.extend HelperExampleGroup
|
27
27
|
helper_spec.should_receive(:view_assigns)
|
28
28
|
av_tc_b_view = double('_view')
|
29
29
|
av_tc_b_view.should_receive(:assign)
|
@@ -55,7 +55,7 @@ module RSpec::Rails
|
|
55
55
|
describe "determine_default_helper_class" do
|
56
56
|
it "returns the helper module passed to describe" do
|
57
57
|
helper_spec = Object.new.extend HelperExampleGroup::ClassMethods
|
58
|
-
helper_spec.stub(:
|
58
|
+
helper_spec.stub(:described_class) { FoosHelper }
|
59
59
|
helper_spec.determine_default_helper_class("ignore this").
|
60
60
|
should eq(FoosHelper)
|
61
61
|
end
|
@@ -94,7 +94,7 @@ module RSpec::Rails
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
include Local
|
97
|
-
include ViewExampleGroup::
|
97
|
+
include ViewExampleGroup::ExampleMethods
|
98
98
|
end.new
|
99
99
|
end
|
100
100
|
|
@@ -124,7 +124,7 @@ module RSpec::Rails
|
|
124
124
|
describe '#params' do
|
125
125
|
let(:view_spec) do
|
126
126
|
Class.new do
|
127
|
-
include ViewExampleGroup::
|
127
|
+
include ViewExampleGroup::ExampleMethods
|
128
128
|
def controller
|
129
129
|
@controller ||= Object.new
|
130
130
|
end
|
@@ -140,7 +140,7 @@ module RSpec::Rails
|
|
140
140
|
describe "#_controller_path" do
|
141
141
|
let(:view_spec) do
|
142
142
|
Class.new do
|
143
|
-
include ViewExampleGroup::
|
143
|
+
include ViewExampleGroup::ExampleMethods
|
144
144
|
end.new
|
145
145
|
end
|
146
146
|
context "with a common _default_file_to_render" do
|
@@ -165,7 +165,7 @@ module RSpec::Rails
|
|
165
165
|
describe "#view" do
|
166
166
|
let(:view_spec) do
|
167
167
|
Class.new do
|
168
|
-
include ViewExampleGroup::
|
168
|
+
include ViewExampleGroup::ExampleMethods
|
169
169
|
end.new
|
170
170
|
end
|
171
171
|
|
@@ -179,7 +179,7 @@ module RSpec::Rails
|
|
179
179
|
describe "#template" do
|
180
180
|
let(:view_spec) do
|
181
181
|
Class.new do
|
182
|
-
include ViewExampleGroup::
|
182
|
+
include ViewExampleGroup::ExampleMethods
|
183
183
|
def _view; end
|
184
184
|
end.new
|
185
185
|
end
|
@@ -61,7 +61,7 @@ describe "render_template" do
|
|
61
61
|
context "with should_not" do
|
62
62
|
context "when assert_template fails" do
|
63
63
|
it "passes" do
|
64
|
-
|
64
|
+
def assert_template(*)
|
65
65
|
raise ActiveSupport::TestCase::Assertion.new("this message")
|
66
66
|
end
|
67
67
|
expect do
|
@@ -72,7 +72,7 @@ describe "render_template" do
|
|
72
72
|
|
73
73
|
context "when assert_template passes" do
|
74
74
|
it "fails with custom failure message" do
|
75
|
-
|
75
|
+
def assert_template(*); end
|
76
76
|
expect do
|
77
77
|
response.should_not render_template("template_name")
|
78
78
|
end.to raise_error(/expected not to render \"template_name\", but did/)
|
@@ -81,9 +81,7 @@ describe "render_template" do
|
|
81
81
|
|
82
82
|
context "when fails due to some other exception" do
|
83
83
|
it "raises that exception" do
|
84
|
-
|
85
|
-
raise "oops"
|
86
|
-
end
|
84
|
+
def assert_template(*); raise "oops"; end
|
87
85
|
expect do
|
88
86
|
response.should_not render_template("template_name")
|
89
87
|
end.to raise_exception("oops")
|
@@ -188,6 +188,34 @@ describe "mock_model(RealModel)" do
|
|
188
188
|
it "says it will respond_to?(key) if RealModel has the attribute 'key'" do
|
189
189
|
@model.respond_to?("column_a").should be(true)
|
190
190
|
end
|
191
|
+
it "stubs column accessor (with string)" do
|
192
|
+
@model.respond_to?("column_a")
|
193
|
+
@model.column_a.should be_nil
|
194
|
+
end
|
195
|
+
it "stubs column accessor (with symbol)" do
|
196
|
+
@model.respond_to?(:column_a)
|
197
|
+
@model.column_a.should be_nil
|
198
|
+
end
|
199
|
+
it "does not stub column accessor if already stubbed in declaration (with string)" do
|
200
|
+
model = mock_model(MockableModel, "column_a" => "a")
|
201
|
+
model.respond_to?("column_a")
|
202
|
+
model.column_a.should eq("a")
|
203
|
+
end
|
204
|
+
it "does not stub column accessor if already stubbed in declaration (with symbol)" do
|
205
|
+
model = mock_model(MockableModel, :column_a => "a")
|
206
|
+
model.respond_to?("column_a")
|
207
|
+
model.column_a.should eq("a")
|
208
|
+
end
|
209
|
+
it "does not stub column accessor if already stubbed after declaration (with string)" do
|
210
|
+
@model.stub("column_a" => "a")
|
211
|
+
@model.respond_to?("column_a")
|
212
|
+
@model.column_a.should eq("a")
|
213
|
+
end
|
214
|
+
it "does not stub column accessor if already stubbed after declaration (with symbol)" do
|
215
|
+
@model.stub(:column_a => "a")
|
216
|
+
@model.respond_to?("column_a")
|
217
|
+
@model.column_a.should eq("a")
|
218
|
+
end
|
191
219
|
it "says it will not respond_to?(key) if RealModel does not have the attribute 'key'" do
|
192
220
|
@model.respond_to?("column_c").should be(false)
|
193
221
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15424209
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 8
|
9
9
|
- 0
|
10
10
|
- rc
|
11
|
-
-
|
12
|
-
version: 2.8.0.
|
11
|
+
- 2
|
12
|
+
version: 2.8.0.rc2
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- David Chelimsky
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-
|
20
|
+
date: 2011-12-20 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -30,10 +30,10 @@ dependencies:
|
|
30
30
|
- 3
|
31
31
|
- 0
|
32
32
|
version: "3.0"
|
33
|
-
requirement: *id001
|
34
|
-
type: :runtime
|
35
33
|
prerelease: false
|
34
|
+
requirement: *id001
|
36
35
|
name: activesupport
|
36
|
+
type: :runtime
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
- 3
|
46
46
|
- 0
|
47
47
|
version: "3.0"
|
48
|
-
requirement: *id002
|
49
|
-
type: :runtime
|
50
48
|
prerelease: false
|
49
|
+
requirement: *id002
|
51
50
|
name: actionpack
|
51
|
+
type: :runtime
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
@@ -60,36 +60,37 @@ dependencies:
|
|
60
60
|
- 3
|
61
61
|
- 0
|
62
62
|
version: "3.0"
|
63
|
-
requirement: *id003
|
64
|
-
type: :runtime
|
65
63
|
prerelease: false
|
64
|
+
requirement: *id003
|
66
65
|
name: railties
|
66
|
+
type: :runtime
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
71
71
|
- - "="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
hash:
|
73
|
+
hash: 15424209
|
74
74
|
segments:
|
75
75
|
- 2
|
76
76
|
- 8
|
77
77
|
- 0
|
78
78
|
- rc
|
79
|
-
-
|
80
|
-
version: 2.8.0.
|
81
|
-
requirement: *id004
|
82
|
-
type: :runtime
|
79
|
+
- 2
|
80
|
+
version: 2.8.0.rc2
|
83
81
|
prerelease: false
|
82
|
+
requirement: *id004
|
84
83
|
name: rspec
|
84
|
+
type: :runtime
|
85
85
|
description: RSpec-2 for Rails-3
|
86
|
-
email:
|
86
|
+
email: rspec-users@rubyforge.org
|
87
87
|
executables: []
|
88
88
|
|
89
89
|
extensions: []
|
90
90
|
|
91
91
|
extra_rdoc_files:
|
92
92
|
- README.md
|
93
|
+
- License.txt
|
93
94
|
files:
|
94
95
|
- lib/autotest/rails_rspec2.rb
|
95
96
|
- lib/generators/rspec.rb
|
@@ -151,6 +152,7 @@ files:
|
|
151
152
|
- lib/rspec/rails/version.rb
|
152
153
|
- lib/rspec/rails/view_assigns.rb
|
153
154
|
- lib/rspec/rails/view_rendering.rb
|
155
|
+
- License.txt
|
154
156
|
- README.md
|
155
157
|
- features/Autotest.md
|
156
158
|
- features/Generators.md
|
@@ -228,8 +230,8 @@ files:
|
|
228
230
|
- spec/support/helpers.rb
|
229
231
|
- spec/support/matchers.rb
|
230
232
|
homepage: http://github.com/rspec/rspec-rails
|
231
|
-
licenses:
|
232
|
-
|
233
|
+
licenses:
|
234
|
+
- MIT
|
233
235
|
post_install_message:
|
234
236
|
rdoc_options:
|
235
237
|
- --charset=UTF-8
|
@@ -261,7 +263,7 @@ rubyforge_project: rspec
|
|
261
263
|
rubygems_version: 1.8.11
|
262
264
|
signing_key:
|
263
265
|
specification_version: 3
|
264
|
-
summary: rspec-rails-2.8.0.
|
266
|
+
summary: rspec-rails-2.8.0.rc2
|
265
267
|
test_files:
|
266
268
|
- features/Autotest.md
|
267
269
|
- features/Generators.md
|
@@ -338,3 +340,4 @@ test_files:
|
|
338
340
|
- spec/support/ar_classes.rb
|
339
341
|
- spec/support/helpers.rb
|
340
342
|
- spec/support/matchers.rb
|
343
|
+
has_rdoc:
|