rspec-rails 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +32 -14
- data/History.md +8 -0
- data/README.md +2 -2
- data/Upgrade.markdown +11 -2
- data/features/README.markdown +66 -0
- data/features/controller_specs/README.md +25 -0
- data/features/controller_specs/controller_spec.feature +19 -0
- data/features/matchers/README.md +4 -0
- data/features/step_definitions/rspec_steps.rb +5 -0
- data/lib/rspec/rails/mocks.rb +4 -0
- data/lib/rspec/rails/version.rb +1 -1
- data/spec/rspec/rails/mocks/mock_model_spec.rb +26 -4
- data/templates/generate_stuff.rb +1 -1
- metadata +28 -19
- data/autotest/discover.rb +0 -1
- data/features/controller_specs/readers.feature +0 -18
- data/lib/generators/rspec/install/templates/autotest/discover.rb +0 -2
data/Gemfile
CHANGED
@@ -1,24 +1,42 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
%w[rspec rspec-core rspec-expectations rspec-mocks].each do |lib|
|
4
|
+
library_path = File.expand_path("../../#{lib}", __FILE__)
|
5
|
+
if File.exist?(library_path)
|
6
|
+
gem lib, :path => library_path
|
7
|
+
else
|
8
|
+
gem lib
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
|
-
gem "
|
12
|
+
gem "rake", "0.8.7"
|
13
|
+
gem "cucumber", "0.9.4"
|
11
14
|
gem "aruba", "0.2.2"
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem
|
15
|
+
gem "rcov", "0.9.9"
|
16
|
+
gem "relish", "0.2.0"
|
17
|
+
gem "guard-rspec", "0.1.9"
|
18
|
+
gem "growl", "1.0.3"
|
19
|
+
gem "ZenTest", "~> 4.4.2"
|
20
|
+
|
21
|
+
if RUBY_PLATFORM =~ /darwin/
|
22
|
+
gem "autotest-fsevent", "~> 0.2.4"
|
23
|
+
gem "autotest-growl", "~> 0.2.9"
|
24
|
+
end
|
15
25
|
|
16
|
-
gem
|
26
|
+
gem "ruby-debug", :platforms => :ruby_18
|
27
|
+
gem "ruby-debug19", "~> 0.11.6", :platforms => :ruby_19
|
17
28
|
|
18
|
-
platforms :
|
19
|
-
gem
|
29
|
+
platforms :ruby_18, :ruby_19 do
|
30
|
+
gem "rb-fsevent", "~> 0.3.9"
|
31
|
+
gem "ruby-prof", "~> 0.9.2"
|
20
32
|
end
|
21
33
|
|
22
|
-
platforms :
|
23
|
-
gem
|
34
|
+
platforms :jruby do
|
35
|
+
gem "jruby-openssl"
|
24
36
|
end
|
37
|
+
|
38
|
+
#### rspec-rails only
|
39
|
+
gem "rails", :path => File.expand_path("../vendor/rails", __FILE__)
|
40
|
+
gem "rack", :git => "git://github.com/rack/rack.git"
|
41
|
+
gem 'webrat', "0.7.2"
|
42
|
+
gem 'sqlite3-ruby', :require => 'sqlite3'
|
data/History.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
## rspec-rails-2 release history
|
2
2
|
|
3
|
+
### 2.3.0 / 2010-12-12
|
4
|
+
|
5
|
+
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.2.1...v2.3.0)
|
6
|
+
|
7
|
+
* Changes
|
8
|
+
* Generator no longer generates autotest/autodiscover.rb, as it is no longer
|
9
|
+
needed (as of rspec-core-2.3.0)
|
10
|
+
|
3
11
|
### 2.2.1 / 2010-12-01
|
4
12
|
|
5
13
|
[full changelog](http://github.com/rspec/rspec-rails/compare/v2.2.0...v2.2.1)
|
data/README.md
CHANGED
@@ -6,10 +6,10 @@ NOTE: rspec-2 does _not_ support rails-2. Use rspec-rails-1.3.x for rails-2.
|
|
6
6
|
|
7
7
|
## Documentation
|
8
8
|
|
9
|
-
The [Cucumber features](http://relishapp.com/rspec/rspec-rails
|
9
|
+
The [Cucumber features](http://relishapp.com/rspec/rspec-rails) are the
|
10
10
|
most comprehensive and up-to-date docs for end-users.
|
11
11
|
|
12
|
-
The [RDoc](http://rubydoc.info/gems/rspec-rails/2.
|
12
|
+
The [RDoc](http://rubydoc.info/gems/rspec-rails/2.3.0/frames) provides additional
|
13
13
|
information for contributors and/or extenders.
|
14
14
|
|
15
15
|
All of the documentation is open source and a work in progress. If you find it
|
data/Upgrade.markdown
CHANGED
@@ -1,4 +1,14 @@
|
|
1
|
-
#
|
1
|
+
# rspec-rails-2.3.0
|
2
|
+
|
3
|
+
## autotest integration
|
4
|
+
|
5
|
+
Add a .rspec file to the project's root directory (if not already there) to
|
6
|
+
tell RSpec to tell Autotest to use RSpec's specialized Autotest class.
|
7
|
+
|
8
|
+
NOTE that rspec-core-2.0, 2.1, and 2.2 required an autotest/discover.rb file in
|
9
|
+
the project's root directory. This worked with some, but not all versions of
|
10
|
+
autotest and/or the autotest command that ships with ZenTest. This new approach
|
11
|
+
will work regardless of which version of autotest/ZenTest you are using.
|
2
12
|
|
3
13
|
## Webrat and Capybara
|
4
14
|
|
@@ -51,4 +61,3 @@ to this:
|
|
51
61
|
stub_model(Widget).as_new_record
|
52
62
|
|
53
63
|
Generators in 2.0.0 final release will do the latter.
|
54
|
-
|
data/features/README.markdown
CHANGED
@@ -6,6 +6,71 @@ for requests, controllers, models, views, and helpers.
|
|
6
6
|
rspec-rails-2 supports rails-3.0.0 and later. For earlier versions of Rails,
|
7
7
|
you need [rspec-rails-1.3](http://rspec.info).
|
8
8
|
|
9
|
+
## Install
|
10
|
+
|
11
|
+
gem install rspec-rails
|
12
|
+
|
13
|
+
This installs the following gems:
|
14
|
+
|
15
|
+
rspec
|
16
|
+
rspec-core
|
17
|
+
rspec-expectations
|
18
|
+
rspec-mocks
|
19
|
+
rspec-rails
|
20
|
+
|
21
|
+
## Configure
|
22
|
+
|
23
|
+
Add rspec-rails to the :test and :development groups in the Gemfile:
|
24
|
+
|
25
|
+
group :test, :development do
|
26
|
+
gem "rspec-rails", "~> 2.0.1"
|
27
|
+
end
|
28
|
+
|
29
|
+
It needs to be in the :development group to expose generators and rake tasks
|
30
|
+
without having to type RAILS_ENV=test.
|
31
|
+
|
32
|
+
Now you can run:
|
33
|
+
|
34
|
+
script/rails generate rspec:install
|
35
|
+
|
36
|
+
This adds the spec directory and some skeleton files, including a .rspec
|
37
|
+
file.
|
38
|
+
|
39
|
+
## Generators
|
40
|
+
|
41
|
+
If you type script/rails generate, the only RSpec generator you'll actually see
|
42
|
+
is rspec:install. That's because RSpec is registered with Rails as the test
|
43
|
+
framework, so whenever you generate application components like models,
|
44
|
+
controllers, etc, RSpec specs are generated instead of Test::Unit tests.
|
45
|
+
|
46
|
+
Note that the generators are there to help you get started, but they are no
|
47
|
+
substitute for writing your own examples, and they are only guaranteed to work
|
48
|
+
out of the box for the default scenario (ActiveRecord + Webrat).
|
49
|
+
|
50
|
+
## Autotest
|
51
|
+
|
52
|
+
The rspec:install generator creates a .rspec file, which tells RSpec to tell
|
53
|
+
Autotest that you're using RSpec and Rails. You'll also need to add the ZenTest
|
54
|
+
gem to your Gemfile:
|
55
|
+
|
56
|
+
gem "ZenTest"
|
57
|
+
|
58
|
+
At this point, if all of the gems in your Gemfile are installed in system gems,
|
59
|
+
you can just type autotest. If, however, Bundler is managing any gems for you
|
60
|
+
directly (i.e. you've got :git or :path attributes in the Gemfile), you'll need
|
61
|
+
to run bundle exec autotest.
|
62
|
+
|
63
|
+
## Webrat and Capybara
|
64
|
+
|
65
|
+
You can choose between webrat or capybara for simulating a browser, automating
|
66
|
+
a browser, or setting expectations using the matchers they supply. Just add
|
67
|
+
your preference to the Gemfile:
|
68
|
+
|
69
|
+
gem "webrat"
|
70
|
+
gem "capybara"
|
71
|
+
|
72
|
+
Note that Capybara matchers are not available in view or helper specs.
|
73
|
+
|
9
74
|
## Issues
|
10
75
|
|
11
76
|
The documentation for rspec-rails is a work in progress. We'll be adding
|
@@ -15,3 +80,4 @@ incomplete or confusing, or, better yet, wish to write a missing Cucumber
|
|
15
80
|
feature yourself, please [submit an
|
16
81
|
issue](http://github.com/rspec/rspec-rails/issues) or a [pull
|
17
82
|
request](http://github.com/rspec/rspec-rails).
|
83
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
A controller spec is an RSpec wrapper for a Rails functional test. It allows
|
2
|
+
you to simulate a single http request in each example, and then specify
|
3
|
+
expected outcomes, such as:
|
4
|
+
|
5
|
+
* templates that are rendered by the action
|
6
|
+
* instance variables that are assigned in the controller to be shared with
|
7
|
+
the view
|
8
|
+
* cookies that get sent back with the response
|
9
|
+
|
10
|
+
To specify outcomes, you can use:
|
11
|
+
|
12
|
+
* standard rspec matchers (response.code.should eq(200))
|
13
|
+
* standard test/unit assertions (assert_equal 200, response.code)
|
14
|
+
* rails assertions (assert_response 200)
|
15
|
+
* rails-specific matchers:
|
16
|
+
* response.should render_template (wraps assert_template)
|
17
|
+
* response.should redirect_to (wraps assert_redirected_to)
|
18
|
+
* assigns(:widget).should be_a_new(Widget)
|
19
|
+
|
20
|
+
Conventions:
|
21
|
+
|
22
|
+
* pass the controller being spec'd to the describe method
|
23
|
+
* this is only necessary for the outermost example group
|
24
|
+
* by default, views are not rendered. See "isolation from views" and
|
25
|
+
"render_views" for details
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Feature: controller spec
|
2
|
+
|
3
|
+
|
4
|
+
Scenario: simple passing example
|
5
|
+
Given a file named "spec/controllers/widgets_controller_spec.rb" with:
|
6
|
+
"""
|
7
|
+
require "spec_helper"
|
8
|
+
|
9
|
+
describe WidgetsController do
|
10
|
+
describe "GET index" do
|
11
|
+
it "has a 200 status code" do
|
12
|
+
get :index
|
13
|
+
response.code.should eq("200")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
When I run "rspec spec"
|
19
|
+
Then the example should pass
|
data/lib/rspec/rails/mocks.rb
CHANGED
data/lib/rspec/rails/version.rb
CHANGED
@@ -144,11 +144,27 @@ describe "mock_model(RealModel)" do
|
|
144
144
|
MockableModel.stub(:column_names).and_return(["column_a", "column_b"])
|
145
145
|
@model = mock_model(MockableModel)
|
146
146
|
end
|
147
|
-
|
148
|
-
|
147
|
+
context "without as_null_object" do
|
148
|
+
it "says it will respond_to?(key) if RealModel has the attribute 'key'" do
|
149
|
+
@model.respond_to?("column_a").should be(true)
|
150
|
+
end
|
151
|
+
it "says it will not respond_to?(key) if RealModel does not have the attribute 'key'" do
|
152
|
+
@model.respond_to?("column_c").should be(false)
|
153
|
+
end
|
154
|
+
it "says it will not respond_to?(xxx_before_type_cast)" do
|
155
|
+
@model.respond_to?("title_before_type_cast").should be(false)
|
156
|
+
end
|
149
157
|
end
|
150
|
-
|
151
|
-
|
158
|
+
context "with as_null_object" do
|
159
|
+
it "says it will respond_to?(key) if RealModel has the attribute 'key'" do
|
160
|
+
@model.as_null_object.respond_to?("column_a").should be(true)
|
161
|
+
end
|
162
|
+
it "says it will respond_to?(key) even if RealModel does not have the attribute 'key'" do
|
163
|
+
@model.as_null_object.respond_to?("column_c").should be(true)
|
164
|
+
end
|
165
|
+
it "says it will not respond_to?(xxx_before_type_cast)" do
|
166
|
+
@model.as_null_object.respond_to?("title_before_type_cast").should be(false)
|
167
|
+
end
|
152
168
|
end
|
153
169
|
end
|
154
170
|
|
@@ -157,6 +173,12 @@ describe "mock_model(RealModel)" do
|
|
157
173
|
model = NonActiveRecordModel.new
|
158
174
|
model.should respond_to(:to_param)
|
159
175
|
end
|
176
|
+
context "with as_null_object" do
|
177
|
+
it "says it will not respond_to?(xxx_before_type_cast)" do
|
178
|
+
model = NonActiveRecordModel.new.as_null_object
|
179
|
+
model.respond_to?("title_before_type_cast").should be(false)
|
180
|
+
end
|
181
|
+
end
|
160
182
|
end
|
161
183
|
end
|
162
184
|
|
data/templates/generate_stuff.rb
CHANGED
@@ -7,7 +7,7 @@ generate('model thing name:string')
|
|
7
7
|
generate('helper things')
|
8
8
|
generate('scaffold widget name:string category:string instock:boolean')
|
9
9
|
generate('observer widget')
|
10
|
-
generate('scaffold gadget
|
10
|
+
generate('scaffold gadget') # scaffold with no attributes
|
11
11
|
|
12
12
|
run('rake db:migrate')
|
13
13
|
run('rake db:test:prepare')
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 2
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 2.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 2.3.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- David Chelimsky
|
@@ -14,64 +15,68 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-12 00:00:00 -06:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
name: activesupport
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
+
hash: 7
|
27
28
|
segments:
|
28
29
|
- 3
|
29
30
|
- 0
|
30
31
|
version: "3.0"
|
31
32
|
type: :runtime
|
33
|
+
name: activesupport
|
32
34
|
prerelease: false
|
33
35
|
version_requirements: *id001
|
34
36
|
- !ruby/object:Gem::Dependency
|
35
|
-
name: actionpack
|
36
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
38
|
none: false
|
38
39
|
requirements:
|
39
40
|
- - ~>
|
40
41
|
- !ruby/object:Gem::Version
|
42
|
+
hash: 7
|
41
43
|
segments:
|
42
44
|
- 3
|
43
45
|
- 0
|
44
46
|
version: "3.0"
|
45
47
|
type: :runtime
|
48
|
+
name: actionpack
|
46
49
|
prerelease: false
|
47
50
|
version_requirements: *id002
|
48
51
|
- !ruby/object:Gem::Dependency
|
49
|
-
name: railties
|
50
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
51
53
|
none: false
|
52
54
|
requirements:
|
53
55
|
- - ~>
|
54
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 7
|
55
58
|
segments:
|
56
59
|
- 3
|
57
60
|
- 0
|
58
61
|
version: "3.0"
|
59
62
|
type: :runtime
|
63
|
+
name: railties
|
60
64
|
prerelease: false
|
61
65
|
version_requirements: *id003
|
62
66
|
- !ruby/object:Gem::Dependency
|
63
|
-
name: rspec
|
64
67
|
requirement: &id004 !ruby/object:Gem::Requirement
|
65
68
|
none: false
|
66
69
|
requirements:
|
67
70
|
- - ~>
|
68
71
|
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
69
73
|
segments:
|
70
74
|
- 2
|
71
|
-
-
|
75
|
+
- 3
|
72
76
|
- 0
|
73
|
-
version: 2.
|
77
|
+
version: 2.3.0
|
74
78
|
type: :runtime
|
79
|
+
name: rspec
|
75
80
|
prerelease: false
|
76
81
|
version_requirements: *id004
|
77
82
|
description: RSpec-2 for Rails-3
|
@@ -92,15 +97,16 @@ files:
|
|
92
97
|
- Rakefile
|
93
98
|
- Thorfile
|
94
99
|
- Upgrade.markdown
|
95
|
-
- autotest/discover.rb
|
96
100
|
- cucumber.yml
|
97
101
|
- features/README.markdown
|
102
|
+
- features/controller_specs/README.md
|
98
103
|
- features/controller_specs/anonymous_controller.feature
|
104
|
+
- features/controller_specs/controller_spec.feature
|
99
105
|
- features/controller_specs/isolation_from_views.feature
|
100
|
-
- features/controller_specs/readers.feature
|
101
106
|
- features/controller_specs/render_views.feature
|
102
107
|
- features/helper_specs/helper_spec.feature
|
103
108
|
- features/mailer_specs/url_helpers.feature
|
109
|
+
- features/matchers/README.md
|
104
110
|
- features/matchers/be_routable_matcher.feature
|
105
111
|
- features/matchers/new_record_matcher.feature
|
106
112
|
- features/matchers/redirect_to_matcher.feature
|
@@ -111,6 +117,7 @@ files:
|
|
111
117
|
- features/model_specs/transactional_examples.feature
|
112
118
|
- features/routing_specs/access_to_named_routes.feature
|
113
119
|
- features/step_definitions/model_steps.rb
|
120
|
+
- features/step_definitions/rspec_steps.rb
|
114
121
|
- features/support/env.rb
|
115
122
|
- features/view_specs/inferred_controller_path.feature
|
116
123
|
- features/view_specs/stub_template.feature
|
@@ -124,7 +131,6 @@ files:
|
|
124
131
|
- lib/generators/rspec/helper/templates/helper_spec.rb
|
125
132
|
- lib/generators/rspec/install/install_generator.rb
|
126
133
|
- lib/generators/rspec/install/templates/.rspec
|
127
|
-
- lib/generators/rspec/install/templates/autotest/discover.rb
|
128
134
|
- lib/generators/rspec/install/templates/spec/spec_helper.rb
|
129
135
|
- lib/generators/rspec/integration/integration_generator.rb
|
130
136
|
- lib/generators/rspec/integration/templates/request_spec.rb
|
@@ -211,7 +217,7 @@ licenses: []
|
|
211
217
|
post_install_message: |
|
212
218
|
**************************************************
|
213
219
|
|
214
|
-
Thank you for installing rspec-rails-2.
|
220
|
+
Thank you for installing rspec-rails-2.3.0!
|
215
221
|
|
216
222
|
This version of rspec-rails only works with versions of rails >= 3.0.0
|
217
223
|
|
@@ -221,7 +227,7 @@ post_install_message: |
|
|
221
227
|
can access its generators and rake tasks.
|
222
228
|
|
223
229
|
group :development, :test do
|
224
|
-
gem "rspec-rails", ">= 2.
|
230
|
+
gem "rspec-rails", ">= 2.3.0"
|
225
231
|
end
|
226
232
|
|
227
233
|
Be sure to run the following command in each of your Rails apps if you're
|
@@ -252,7 +258,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
258
|
requirements:
|
253
259
|
- - ">="
|
254
260
|
- !ruby/object:Gem::Version
|
255
|
-
hash:
|
261
|
+
hash: 3
|
256
262
|
segments:
|
257
263
|
- 0
|
258
264
|
version: "0"
|
@@ -261,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
261
267
|
requirements:
|
262
268
|
- - ">="
|
263
269
|
- !ruby/object:Gem::Version
|
264
|
-
hash:
|
270
|
+
hash: 3
|
265
271
|
segments:
|
266
272
|
- 0
|
267
273
|
version: "0"
|
@@ -271,15 +277,17 @@ rubyforge_project: rspec
|
|
271
277
|
rubygems_version: 1.3.7
|
272
278
|
signing_key:
|
273
279
|
specification_version: 3
|
274
|
-
summary: rspec-rails-2.
|
280
|
+
summary: rspec-rails-2.3.0
|
275
281
|
test_files:
|
276
282
|
- features/README.markdown
|
283
|
+
- features/controller_specs/README.md
|
277
284
|
- features/controller_specs/anonymous_controller.feature
|
285
|
+
- features/controller_specs/controller_spec.feature
|
278
286
|
- features/controller_specs/isolation_from_views.feature
|
279
|
-
- features/controller_specs/readers.feature
|
280
287
|
- features/controller_specs/render_views.feature
|
281
288
|
- features/helper_specs/helper_spec.feature
|
282
289
|
- features/mailer_specs/url_helpers.feature
|
290
|
+
- features/matchers/README.md
|
283
291
|
- features/matchers/be_routable_matcher.feature
|
284
292
|
- features/matchers/new_record_matcher.feature
|
285
293
|
- features/matchers/redirect_to_matcher.feature
|
@@ -290,6 +298,7 @@ test_files:
|
|
290
298
|
- features/model_specs/transactional_examples.feature
|
291
299
|
- features/routing_specs/access_to_named_routes.feature
|
292
300
|
- features/step_definitions/model_steps.rb
|
301
|
+
- features/step_definitions/rspec_steps.rb
|
293
302
|
- features/support/env.rb
|
294
303
|
- features/view_specs/inferred_controller_path.feature
|
295
304
|
- features/view_specs/stub_template.feature
|
data/autotest/discover.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Autotest.add_discovery { "rspec2" }
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Feature: controller spec readers
|
2
|
-
|
3
|
-
Controller specs expose a number of different
|
4
|
-
attribute readers.
|
5
|
-
|
6
|
-
Scenario: access controller
|
7
|
-
Given a file named "spec/controllers/widgets_controller_spec.rb" with:
|
8
|
-
"""
|
9
|
-
require "spec_helper"
|
10
|
-
|
11
|
-
describe WidgetsController do
|
12
|
-
it "is available before an action" do
|
13
|
-
controller.should be_an_instance_of(WidgetsController)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
"""
|
17
|
-
When I run "rspec ./spec"
|
18
|
-
Then the output should contain "1 example, 0 failures"
|