shoulda-matchers 2.6.2 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Appraisals +6 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +26 -22
- data/NEWS.md +52 -1
- data/README.md +8 -6
- data/Rakefile +1 -1
- data/doc_config/gh-pages/index.html.erb +1 -1
- data/doc_config/yard/templates/default/fulldoc/html/css/global.css +1 -1
- data/doc_config/yard/templates/default/fulldoc/html/css/style.css +26 -0
- data/features/rails_integration.feature +18 -3
- data/features/step_definitions/rails_steps.rb +21 -3
- data/gemfiles/3.0.gemfile +1 -1
- data/gemfiles/3.0.gemfile.lock +30 -24
- data/gemfiles/3.1.gemfile +1 -1
- data/gemfiles/3.1.gemfile.lock +32 -26
- data/gemfiles/3.1_1.9.2.gemfile +1 -1
- data/gemfiles/3.1_1.9.2.gemfile.lock +22 -19
- data/gemfiles/3.2.gemfile +1 -1
- data/gemfiles/3.2.gemfile.lock +32 -26
- data/gemfiles/3.2_1.9.2.gemfile +1 -1
- data/gemfiles/3.2_1.9.2.gemfile.lock +8 -8
- data/gemfiles/4.0.0.gemfile +2 -2
- data/gemfiles/4.0.0.gemfile.lock +35 -31
- data/gemfiles/4.0.1.gemfile +2 -2
- data/gemfiles/4.0.1.gemfile.lock +24 -22
- data/gemfiles/4.1.gemfile +1 -1
- data/gemfiles/4.1.gemfile.lock +26 -22
- data/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +10 -3
- data/lib/shoulda/matchers/action_controller/set_session_matcher.rb +24 -6
- data/lib/shoulda/matchers/active_model.rb +2 -2
- data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +1 -1
- data/lib/shoulda/matchers/active_model/ensure_length_of_matcher.rb +1 -1
- data/lib/shoulda/matchers/active_model/validate_absence_of_matcher.rb +5 -3
- data/lib/shoulda/matchers/active_model/{ensure_exclusion_of_matcher.rb → validate_exclusion_of_matcher.rb} +20 -10
- data/lib/shoulda/matchers/active_model/{ensure_inclusion_of_matcher.rb → validate_inclusion_of_matcher.rb} +52 -28
- data/lib/shoulda/matchers/active_model/validate_uniqueness_of_matcher.rb +28 -19
- data/lib/shoulda/matchers/active_record.rb +18 -16
- data/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +4 -4
- data/lib/shoulda/matchers/active_record/association_matcher.rb +17 -12
- data/lib/shoulda/matchers/active_record/association_matchers/join_table_matcher.rb +86 -0
- data/lib/shoulda/matchers/active_record/association_matchers/model_reflection.rb +19 -0
- data/lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb +2 -1
- data/lib/shoulda/matchers/active_record/define_enum_for_matcher.rb +138 -0
- data/lib/shoulda/matchers/independent.rb +3 -2
- data/lib/shoulda/matchers/independent/{delegate_matcher.rb → delegate_method_matcher.rb} +69 -49
- data/lib/shoulda/matchers/independent/delegate_method_matcher/stubbed_target.rb +37 -0
- data/lib/shoulda/matchers/independent/delegate_method_matcher/target_not_defined_error.rb +15 -0
- data/lib/shoulda/matchers/version.rb +1 -1
- data/lib/shoulda/matchers/warn.rb +30 -2
- data/spec/shoulda/matchers/action_controller/filter_param_matcher_spec.rb +6 -0
- data/spec/shoulda/matchers/action_controller/set_session_matcher_spec.rb +67 -5
- data/spec/shoulda/matchers/action_controller/strong_parameters_matcher_spec.rb +9 -9
- data/spec/shoulda/matchers/active_model/validate_absence_of_matcher_spec.rb +30 -3
- data/spec/shoulda/matchers/active_model/{ensure_exclusion_of_matcher_spec.rb → validate_exclusion_of_matcher_spec.rb} +29 -13
- data/spec/shoulda/matchers/active_model/{ensure_inclusion_of_matcher_spec.rb → validate_inclusion_of_matcher_spec.rb} +34 -16
- data/spec/shoulda/matchers/active_model/validate_uniqueness_of_matcher_spec.rb +35 -0
- data/spec/shoulda/matchers/active_record/association_matcher_spec.rb +56 -1
- data/spec/shoulda/matchers/active_record/define_enum_for_matcher_spec.rb +101 -0
- data/spec/shoulda/matchers/doublespeak/object_double_spec.rb +6 -6
- data/spec/shoulda/matchers/independent/{delegate_matcher → delegate_method_matcher}/stubbed_target_spec.rb +1 -1
- data/spec/shoulda/matchers/independent/{delegate_matcher_spec.rb → delegate_method_matcher_spec.rb} +88 -29
- data/spec/spec_helper.rb +2 -3
- data/spec/support/fail_with_message_including_matcher.rb +14 -3
- data/spec/support/fail_with_message_matcher.rb +14 -2
- data/spec/support/rails_versions.rb +4 -0
- metadata +19 -14
- data/lib/shoulda/matchers/independent/delegate_matcher/stubbed_target.rb +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e928b8bdcbb158173df075e2d49af0aeb4f584cc
|
4
|
+
data.tar.gz: 43b6015bf156cec9cb62f686a927e81eaea239b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a1d71a62c646c5607e59ace508393a28068e8c23c0744616a55f846b7bd2be2c7f31a2183c67f75ab72a7f51e03f8efc844ba9f22ad42817d5a17660c0cc0c2
|
7
|
+
data.tar.gz: f2834dcc2f6e3e052df77f725c676f55264e63ae6f6d20ac7c629728892ef4b0d515b2cedd75a00c1145d7d626d7ab1715eadcf20f0d8374adb446f69577822e
|
data/Appraisals
CHANGED
@@ -7,6 +7,7 @@ end
|
|
7
7
|
|
8
8
|
rails_3 = proc do
|
9
9
|
gem 'strong_parameters'
|
10
|
+
gem 'rspec-rails', '2.99.0'
|
10
11
|
end
|
11
12
|
|
12
13
|
rails_3_1 = proc do
|
@@ -17,6 +18,7 @@ rails_3_1 = proc do
|
|
17
18
|
gem 'sass-rails', '~> 3.1.5'
|
18
19
|
gem 'coffee-rails', '~> 3.1.1'
|
19
20
|
gem 'uglifier', '>= 1.0.3'
|
21
|
+
gem 'rspec-rails', '2.99.0'
|
20
22
|
end
|
21
23
|
|
22
24
|
rails_3_2 = proc do
|
@@ -35,9 +37,9 @@ rails_4 = proc do
|
|
35
37
|
gem 'coffee-rails', '~> 4.0.0'
|
36
38
|
gem 'jquery-rails'
|
37
39
|
gem 'turbolinks'
|
38
|
-
gem 'jbuilder', '~> 1.2'
|
39
40
|
gem 'sdoc'
|
40
41
|
gem 'activeresource', '4.0.0'
|
42
|
+
gem 'rspec-rails', '~> 3.0.1'
|
41
43
|
# Test suite makes heavy use of attr_accessible
|
42
44
|
gem 'protected_attributes'
|
43
45
|
end
|
@@ -78,6 +80,7 @@ if Gem::Requirement.new('> 1.9.2').satisfied_by?(ruby_version)
|
|
78
80
|
appraise '4.0.0' do
|
79
81
|
instance_eval(&rails_4)
|
80
82
|
gem 'rails', '4.0.0'
|
83
|
+
gem 'jbuilder', '~> 1.2'
|
81
84
|
gem 'sass-rails', '~> 4.0.0'
|
82
85
|
gem 'bcrypt-ruby', '~> 3.0.0'
|
83
86
|
end
|
@@ -85,8 +88,10 @@ if Gem::Requirement.new('> 1.9.2').satisfied_by?(ruby_version)
|
|
85
88
|
appraise '4.0.1' do
|
86
89
|
instance_eval(&rails_4)
|
87
90
|
gem 'rails', '4.0.1'
|
91
|
+
gem 'jbuilder', '~> 1.2'
|
88
92
|
gem 'sass-rails', '~> 4.0.0'
|
89
93
|
gem 'bcrypt-ruby', '~> 3.1.2'
|
94
|
+
gem 'rspec-rails', '2.99.0'
|
90
95
|
end
|
91
96
|
|
92
97
|
appraise '4.1' do
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shoulda-matchers (2.
|
4
|
+
shoulda-matchers (2.7.0)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -39,29 +39,29 @@ GEM
|
|
39
39
|
rake
|
40
40
|
thor (>= 0.14.0)
|
41
41
|
arel (3.0.3)
|
42
|
-
aruba (0.
|
43
|
-
childprocess (
|
42
|
+
aruba (0.6.0)
|
43
|
+
childprocess (>= 0.3.6)
|
44
44
|
cucumber (>= 1.1.1)
|
45
45
|
rspec-expectations (>= 2.7.0)
|
46
46
|
bourne (1.5.0)
|
47
47
|
mocha (>= 0.13.2, < 0.15)
|
48
48
|
builder (3.0.4)
|
49
|
-
childprocess (0.3
|
49
|
+
childprocess (0.5.3)
|
50
50
|
ffi (~> 1.0, >= 1.0.11)
|
51
51
|
coderay (1.1.0)
|
52
|
-
cucumber (1.3.
|
52
|
+
cucumber (1.3.16)
|
53
53
|
builder (>= 2.1.2)
|
54
54
|
diff-lcs (>= 1.1.3)
|
55
55
|
gherkin (~> 2.12)
|
56
56
|
multi_json (>= 1.7.5, < 2.0)
|
57
|
-
multi_test (>= 0.
|
57
|
+
multi_test (>= 0.1.1)
|
58
58
|
diff-lcs (1.2.5)
|
59
59
|
erubis (2.7.0)
|
60
60
|
ffi (1.9.3)
|
61
61
|
gherkin (2.12.2)
|
62
62
|
multi_json (~> 1.3)
|
63
63
|
hike (1.2.3)
|
64
|
-
i18n (0.6.
|
64
|
+
i18n (0.6.11)
|
65
65
|
journey (1.0.4)
|
66
66
|
json (1.8.1)
|
67
67
|
mail (2.5.4)
|
@@ -72,8 +72,8 @@ GEM
|
|
72
72
|
mime-types (1.25.1)
|
73
73
|
mocha (0.14.0)
|
74
74
|
metaclass (~> 0.0.1)
|
75
|
-
multi_json (1.
|
76
|
-
multi_test (0.
|
75
|
+
multi_json (1.10.1)
|
76
|
+
multi_test (0.1.1)
|
77
77
|
polyglot (0.3.3)
|
78
78
|
posix-spawn (0.3.8)
|
79
79
|
pry (0.9.12.6)
|
@@ -86,7 +86,7 @@ GEM
|
|
86
86
|
rack (1.4.5)
|
87
87
|
rack-cache (1.2)
|
88
88
|
rack (>= 0.4)
|
89
|
-
rack-ssl (1.3.
|
89
|
+
rack-ssl (1.3.4)
|
90
90
|
rack
|
91
91
|
rack-test (0.6.2)
|
92
92
|
rack (>= 1.0)
|
@@ -105,22 +105,26 @@ GEM
|
|
105
105
|
rake (>= 0.8.7)
|
106
106
|
rdoc (~> 3.4)
|
107
107
|
thor (>= 0.14.6, < 2.0)
|
108
|
-
rake (10.
|
108
|
+
rake (10.3.2)
|
109
109
|
rdoc (3.12.2)
|
110
110
|
json (~> 1.4)
|
111
111
|
redcarpet (3.0.0)
|
112
|
-
rspec-core (
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
112
|
+
rspec-core (3.0.3)
|
113
|
+
rspec-support (~> 3.0.0)
|
114
|
+
rspec-expectations (3.0.3)
|
115
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
116
|
+
rspec-support (~> 3.0.0)
|
117
|
+
rspec-mocks (3.0.3)
|
118
|
+
rspec-support (~> 3.0.0)
|
119
|
+
rspec-rails (3.0.2)
|
117
120
|
actionpack (>= 3.0)
|
118
|
-
activemodel (>= 3.0)
|
119
121
|
activesupport (>= 3.0)
|
120
122
|
railties (>= 3.0)
|
121
|
-
rspec-core (~>
|
122
|
-
rspec-expectations (~>
|
123
|
-
rspec-mocks (~>
|
123
|
+
rspec-core (~> 3.0.0)
|
124
|
+
rspec-expectations (~> 3.0.0)
|
125
|
+
rspec-mocks (~> 3.0.0)
|
126
|
+
rspec-support (~> 3.0.0)
|
127
|
+
rspec-support (3.0.3)
|
124
128
|
shoulda-context (1.2.0)
|
125
129
|
slop (3.4.7)
|
126
130
|
sprockets (2.2.2)
|
@@ -129,7 +133,7 @@ GEM
|
|
129
133
|
rack (~> 1.0)
|
130
134
|
tilt (~> 1.1, != 1.3.0)
|
131
135
|
sqlite3 (1.3.8)
|
132
|
-
thor (0.
|
136
|
+
thor (0.19.1)
|
133
137
|
tilt (1.4.1)
|
134
138
|
treetop (1.4.15)
|
135
139
|
polyglot
|
@@ -157,7 +161,7 @@ DEPENDENCIES
|
|
157
161
|
rails (~> 3.0)
|
158
162
|
rake (>= 0.9.2)
|
159
163
|
redcarpet
|
160
|
-
rspec-rails (>= 2.
|
164
|
+
rspec-rails (>= 2.99.0)
|
161
165
|
shoulda-context (~> 1.2.0)
|
162
166
|
shoulda-matchers!
|
163
167
|
sqlite3
|
data/NEWS.md
CHANGED
@@ -1,5 +1,56 @@
|
|
1
1
|
# HEAD
|
2
2
|
|
3
|
+
# 2.7.0
|
4
|
+
|
5
|
+
### Deprecations
|
6
|
+
|
7
|
+
* `ensure_inclusion_of` has been renamed to `validate_inclusion_of`.
|
8
|
+
`ensure_inclusion_of` is deprecated and will be removed in 3.0.0.
|
9
|
+
|
10
|
+
* `ensure_exclusion_of` has been renamed to `validate_exclusion_of`.
|
11
|
+
`ensure_exclusion_of` is deprecated and will be removed in 3.0.0.
|
12
|
+
|
13
|
+
### Bug fixes
|
14
|
+
|
15
|
+
* Fix `delegate_method` so that it does not raise an error if the method that
|
16
|
+
returns the delegate object is private.
|
17
|
+
|
18
|
+
* Warn when `ensure_inclusion_of` is chained with `.in_array([false, true])`
|
19
|
+
as well as with `.in_array([true, false])`.
|
20
|
+
|
21
|
+
* Fix `set_session` so that the `to` qualifier if given nil checks that the
|
22
|
+
session variable in question was set to nil (previously this actually did
|
23
|
+
nothing).
|
24
|
+
|
25
|
+
* Fix `filter_param` so that it works when `config.filter_parameters` contains
|
26
|
+
regexes.
|
27
|
+
|
28
|
+
* Fix `delegate_method` so that it can be required independent of Active
|
29
|
+
Support.
|
30
|
+
|
31
|
+
* Fix `validate_uniqueness_of`. When used against an unpersisted record whose
|
32
|
+
model contained a non-nullable column other than the one being validated, the
|
33
|
+
matcher would break. Even if the test set that column to a value beforehand,
|
34
|
+
the record had to be persisted in order for the matcher to work. Now this is
|
35
|
+
no longer the case and the record can remain unpersisted.
|
36
|
+
|
37
|
+
* Fix `validate_absence_of`: it required that a string be passed as the
|
38
|
+
attribute name rather than a symbol (which is the usual and documented usage).
|
39
|
+
|
40
|
+
### Improvements
|
41
|
+
|
42
|
+
* `have_and_belongs_to_many` now checks to make sure that the join table
|
43
|
+
contains the correct columns for the left- and right-hand side of the
|
44
|
+
association.
|
45
|
+
|
46
|
+
* Reword failure message for `delegate_method` so that it's a little more
|
47
|
+
helpful.
|
48
|
+
|
49
|
+
### Features
|
50
|
+
|
51
|
+
* Add new matcher `define_enum_for` to test usage of the `enum` macro introduced
|
52
|
+
in Rails 4.1.
|
53
|
+
|
3
54
|
# 2.6.2
|
4
55
|
|
5
56
|
### Bug fixes
|
@@ -102,7 +153,7 @@
|
|
102
153
|
* Change `validate_uniqueness_of(...)` so that it provides default values for
|
103
154
|
non-nullable attributes.
|
104
155
|
|
105
|
-
* Running `rake` now installs Appraisals before running the test suite.
|
156
|
+
* Running `rake` now installs Appraisals before running the test suite.
|
106
157
|
(Additionally, we now manage Appraisals using the `appraisal` executable in
|
107
158
|
Appraisal 1.0.0.)
|
108
159
|
|
data/README.md
CHANGED
@@ -12,10 +12,10 @@ complex, and error-prone.
|
|
12
12
|
tests usage of Rails 3's `attr_accessible` and `attr_protected` macros.
|
13
13
|
* **[allow_value](lib/shoulda/matchers/active_model/allow_value_matcher.rb)** tests usage of
|
14
14
|
the `validates_format_of` validation.
|
15
|
-
* **[
|
16
|
-
usage of `validates_inclusion_of`.
|
17
|
-
* **[
|
18
|
-
usage of `validates_exclusion_of`.
|
15
|
+
* **[validate_inclusion_of](lib/shoulda/matchers/active_model/validate_inclusion_of_matcher.rb)**
|
16
|
+
tests usage of `validates_inclusion_of`.
|
17
|
+
* **[validate_exclusion_of](lib/shoulda/matchers/active_model/validate_exclusion_of_matcher.rb)**
|
18
|
+
tests usage of `validates_exclusion_of`.
|
19
19
|
* **[ensure_length_of](lib/shoulda/matchers/active_model/ensure_length_of_matcher.rb)** tests usage
|
20
20
|
of `validates_length_of`.
|
21
21
|
* **[have_secure_password](lib/shoulda/matchers/active_model/have_secure_password_matcher.rb)** tests
|
@@ -35,6 +35,8 @@ complex, and error-prone.
|
|
35
35
|
tests usage of the `accepts_nested_attributes_for` macro.
|
36
36
|
* **[belong_to](lib/shoulda/matchers/active_record/association_matcher.rb)** tests
|
37
37
|
your `belongs_to` associations.
|
38
|
+
* **[define_enum_for](lib/shoulda/matchers/active_record/define_enum_for_matcher.rb)**
|
39
|
+
tests usage of the `enum` macro.
|
38
40
|
* **[have_many](lib/shoulda/matchers/active_record/association_matcher.rb)** tests
|
39
41
|
your `has_many` associations.
|
40
42
|
* **[have_one](lib/shoulda/matchers/active_record/association_matcher.rb)** tests your
|
@@ -72,7 +74,7 @@ complex, and error-prone.
|
|
72
74
|
|
73
75
|
### Independent Matchers
|
74
76
|
|
75
|
-
* **[
|
77
|
+
* **[delegate_method](lib/shoulda/matchers/independent/delegate_matcher.rb)**
|
76
78
|
tests that an object forwards messages to other, internal objects by way of
|
77
79
|
delegation.
|
78
80
|
|
@@ -170,6 +172,6 @@ and may be redistributed under the terms specified in the
|
|
170
172
|
[fury]: http://badge.fury.io/rb/shoulda-matchers
|
171
173
|
[travis-badge]: https://secure.travis-ci.org/thoughtbot/shoulda-matchers.png?branch=master
|
172
174
|
[travis]: http://travis-ci.org/thoughtbot/shoulda-matchers
|
173
|
-
[rubydocs]: http://
|
175
|
+
[rubydocs]: http://thoughtbot.github.io/shoulda-matchers
|
174
176
|
[community]: http://thoughtbot.com/community
|
175
177
|
[contributors]: https://github.com/thoughtbot/shoulda-matchers/contributors
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>shoulda-matchers Documentation - latest</title>
|
5
|
-
<meta http-equiv="refresh" content="0;URL=http://
|
5
|
+
<meta http-equiv="refresh" content="0;URL=http://thoughtbot.github.io/shoulda-matchers/<%= locals[:ref] %>">
|
6
6
|
</head>
|
7
7
|
<body>
|
8
8
|
</body>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
@import "http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,600,600italic,800|Droid+Sans+Mono";
|
1
|
+
@import "http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,400italic,600,600italic,800|Droid+Sans+Mono";
|
2
2
|
|
3
3
|
body {
|
4
4
|
font-size: 16px;
|
@@ -209,6 +209,10 @@ h4 + h5 {
|
|
209
209
|
|
210
210
|
/* Class/Module */
|
211
211
|
|
212
|
+
.summary .deprecated {
|
213
|
+
display: none;
|
214
|
+
}
|
215
|
+
|
212
216
|
.method_details {}
|
213
217
|
.method_details td {
|
214
218
|
padding: 10px;
|
@@ -253,6 +257,28 @@ h4 + h5 {
|
|
253
257
|
color: #93a1a1 /* Comment */
|
254
258
|
}
|
255
259
|
|
260
|
+
.method_details .deprecated {
|
261
|
+
margin-bottom: 1em;
|
262
|
+
font-size: 1.1em;
|
263
|
+
}
|
264
|
+
|
265
|
+
.method_details .deprecated strong {
|
266
|
+
background-color: #F03434;
|
267
|
+
color: white;
|
268
|
+
text-transform: uppercase;
|
269
|
+
border-radius: 3px;
|
270
|
+
padding: 0 4px;
|
271
|
+
}
|
272
|
+
|
273
|
+
.method_details .deprecated .inline {
|
274
|
+
padding-left: 3px;
|
275
|
+
}
|
276
|
+
|
277
|
+
.method_details .deprecated div,
|
278
|
+
.method_details .deprecated p {
|
279
|
+
display: inline
|
280
|
+
}
|
281
|
+
|
256
282
|
.docstring, .method_details .showSource, .method_details .source_code {
|
257
283
|
margin-left: 1em;
|
258
284
|
}
|
@@ -66,6 +66,9 @@ Feature: integrate with Rails
|
|
66
66
|
And I write to "spec/models/user_spec.rb" with:
|
67
67
|
"""
|
68
68
|
require 'spec_helper'
|
69
|
+
if RSpec::Core::Version::STRING.to_i >= 3
|
70
|
+
require 'rails_helper'
|
71
|
+
end
|
69
72
|
|
70
73
|
describe User do
|
71
74
|
it { should validate_presence_of(:name) }
|
@@ -74,13 +77,16 @@ Feature: integrate with Rails
|
|
74
77
|
When I write to "spec/controllers/examples_controller_spec.rb" with:
|
75
78
|
"""
|
76
79
|
require 'spec_helper'
|
80
|
+
if RSpec::Core::Version::STRING.to_i >= 3
|
81
|
+
require 'rails_helper'
|
82
|
+
end
|
77
83
|
|
78
84
|
describe ExamplesController, "show" do
|
79
85
|
before { get :show }
|
80
86
|
it { should respond_with(:success) }
|
81
87
|
end
|
82
88
|
"""
|
83
|
-
When I successfully run `bundle exec rake spec SPEC_OPTS=-
|
89
|
+
When I successfully run `bundle exec rake spec SPEC_OPTS=-fd --trace`
|
84
90
|
Then the output should contain "2 examples, 0 failures"
|
85
91
|
And the output should contain "should require name to be set"
|
86
92
|
And the output should contain "should respond with 200"
|
@@ -96,6 +102,9 @@ Feature: integrate with Rails
|
|
96
102
|
And I write to "spec/models/user_spec.rb" with:
|
97
103
|
"""
|
98
104
|
require 'spec_helper'
|
105
|
+
if RSpec::Core::Version::STRING.to_i >= 3
|
106
|
+
require 'rails_helper'
|
107
|
+
end
|
99
108
|
|
100
109
|
describe User do
|
101
110
|
it { should validate_presence_of(:name) }
|
@@ -104,6 +113,9 @@ Feature: integrate with Rails
|
|
104
113
|
When I write to "spec/controllers/examples_controller_spec.rb" with:
|
105
114
|
"""
|
106
115
|
require 'spec_helper'
|
116
|
+
if RSpec::Core::Version::STRING.to_i >= 3
|
117
|
+
require 'rails_helper'
|
118
|
+
end
|
107
119
|
|
108
120
|
describe ExamplesController, "show" do
|
109
121
|
before { get :show }
|
@@ -112,7 +124,7 @@ Feature: integrate with Rails
|
|
112
124
|
end
|
113
125
|
"""
|
114
126
|
When I run `bundle exec spring stop`
|
115
|
-
When I successfully run `bundle exec spring rspec spec -
|
127
|
+
When I successfully run `bundle exec spring rspec spec -fd`
|
116
128
|
Then the output should contain "3 examples, 0 failures"
|
117
129
|
And the output should contain "should require name to be set"
|
118
130
|
And the output should contain "should respond with 200"
|
@@ -124,6 +136,9 @@ Feature: integrate with Rails
|
|
124
136
|
And I write to "spec/models/user_spec.rb" with:
|
125
137
|
"""
|
126
138
|
require 'spec_helper'
|
139
|
+
if RSpec::Core::Version::STRING.to_i == 3
|
140
|
+
require 'rails_helper'
|
141
|
+
end
|
127
142
|
|
128
143
|
describe User do
|
129
144
|
it { should validate_presence_of(:name) }
|
@@ -140,6 +155,6 @@ Feature: integrate with Rails
|
|
140
155
|
end
|
141
156
|
end
|
142
157
|
"""
|
143
|
-
When I successfully run `bundle exec rake spec test:functionals SPEC_OPTS=-
|
158
|
+
When I successfully run `bundle exec rake spec test:functionals SPEC_OPTS=-fd --trace`
|
144
159
|
Then the output should contain "1 example, 0 failures"
|
145
160
|
Then the output should indicate that 1 test was run
|
@@ -70,14 +70,16 @@ When 'I run the rspec generator' do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
When 'I configure the application to use rspec-rails' do
|
73
|
-
append_to_gemfile
|
73
|
+
append_to_gemfile <<-GEMFILE
|
74
|
+
gem 'rspec-rails', '#{rspec_rails_version}'
|
75
|
+
GEMFILE
|
74
76
|
steps %{And I install gems}
|
75
77
|
end
|
76
78
|
|
77
79
|
When 'I configure the application to use rspec-rails in test and development' do
|
78
80
|
append_to_gemfile <<-GEMFILE
|
79
81
|
group :test, :development do
|
80
|
-
gem 'rspec-rails', '
|
82
|
+
gem 'rspec-rails', '#{rspec_rails_version}'
|
81
83
|
end
|
82
84
|
GEMFILE
|
83
85
|
steps %{And I install gems}
|
@@ -90,7 +92,7 @@ When 'I configure the application to use shoulda-context' do
|
|
90
92
|
end
|
91
93
|
|
92
94
|
When 'I require shoulda-matchers following rspec-rails' do
|
93
|
-
insert_line_after
|
95
|
+
insert_line_after test_helper_path,
|
94
96
|
"require 'rspec/rails'",
|
95
97
|
"require 'shoulda/matchers'"
|
96
98
|
end
|
@@ -204,6 +206,22 @@ module FileHelpers
|
|
204
206
|
def rails_lt_4?
|
205
207
|
Gem::Requirement.new('< 4').satisfied_by?(rails_version)
|
206
208
|
end
|
209
|
+
|
210
|
+
def rspec_rails_version
|
211
|
+
Bundler.definition.specs['rspec-rails'][0].version
|
212
|
+
end
|
213
|
+
|
214
|
+
def rspec_rails_gte_3?
|
215
|
+
Gem::Requirement.new('>= 3').satisfied_by?(rspec_rails_version)
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_helper_path
|
219
|
+
if rspec_rails_gte_3?
|
220
|
+
'spec/rails_helper.rb'
|
221
|
+
else
|
222
|
+
'spec/spec_helper.rb'
|
223
|
+
end
|
224
|
+
end
|
207
225
|
end
|
208
226
|
|
209
227
|
World(FileHelpers)
|