lurker 0.5.6 → 0.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/README.md +60 -24
- data/Rakefile +1 -1
- data/certs/razum2um.pem +21 -0
- data/features/controller_nested_schema_scaffolding.feature +5 -9
- data/features/controller_schema_scaffolding.feature +5 -9
- data/features/html_generation.feature +1 -1
- data/features/minitest.feature +140 -0
- data/features/multidomain_support.feature +1 -1
- data/features/partials.feature +3 -3
- data/features/request_nested_schema_scaffolding.feature +3 -3
- data/features/request_schema_scaffolding.feature +2 -2
- data/features/schema_suffixes.feature +4 -4
- data/features/step_definitions/additional_cli_steps.rb +9 -0
- data/features/support/env.rb +1 -1
- data/features/test_endpoint.feature +5 -5
- data/lib/lurker.rb +15 -0
- data/lib/lurker/cli.rb +2 -3
- data/lib/lurker/presenters/endpoint_presenter.rb +10 -4
- data/lib/lurker/request.rb +41 -0
- data/lib/lurker/response.rb +16 -0
- data/lib/lurker/schema.rb +0 -8
- data/lib/lurker/service.rb +2 -2
- data/lib/lurker/spec_helper.rb +2 -0
- data/lib/lurker/spec_helper/rails.rb +40 -0
- data/lib/lurker/spec_helper/rspec.rb +66 -0
- data/lib/lurker/spy.rb +88 -0
- data/lib/lurker/version.rb +1 -1
- data/lurker.gemspec +12 -9
- data/templates/generate_stuff.rb +29 -2
- data/templates/lurker_app.rb +27 -4
- data/templates/rails32_http_patch_support.rb +125 -0
- metadata +119 -57
- metadata.gz.sig +3 -0
- checksums.yaml.gz.asc +0 -12
- data.tar.gz.asc +0 -12
- data/lib/lurker/controller_spec_watcher.rb +0 -70
- data/lib/lurker/request_spec_watcher.rb +0 -80
- data/lib/lurker/spec_watcher.rb +0 -124
- metadata.gz.asc +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0812edbd0dea8fa5b7e25895f2247af7ae966e4c
|
4
|
+
data.tar.gz: 08abda5c9954e5e59554deb6ca9e38db84bbb71a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53ba7f03739d9b9f7dc35f3a0b727122677b2724699cf7bda2697d00f49d448317e53414fe99895ffd4283b93172e8c4141bf832320b1c80f1b42bd0eaa64d0c
|
7
|
+
data.tar.gz: 4531e95b5c5a0bcdfd632f614c8c908b40304686028c11ae4f23b4126ab0fe921c12133fd51d735df560b7f2d5b62f4bad705d73916846a47b374103b7996e33
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<H�;"y���ϊ����ר�h�E3eL�d�8��&���wl�@��,M��D��9������1���l 4[d��T��\�����[���.Yd����Dž�-;���ZQ�BC����v�(��&��X�-sֱ�������ω������t�,>��Ʒ$�@�J��{����Aj{� ��V����J�/�} s������>E�8�.��O�Q5���NՔ��X�Y��,W���Āg>u��W������`
|
data.tar.gz.sig
ADDED
Binary file
|
data/README.md
CHANGED
@@ -10,19 +10,53 @@ Works on Rails 3.2, 4.0, 4.1 & Ruby 1.9.3, 2.0.0, 2.1.1.
|
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
13
|
-
Add
|
13
|
+
Add my public key:
|
14
|
+
|
15
|
+
gem cert --add <(curl -Ls https://raw.github.com/razum2um/lurker/master/certs/razum2um.pem)
|
16
|
+
|
17
|
+
$ gem install lurker # without key
|
18
|
+
$ gem install lurker -P HighSecurity # secure, with key added
|
19
|
+
|
20
|
+
Or this line to your application's Gemfile:
|
14
21
|
|
15
22
|
gem 'lurker'
|
16
23
|
|
24
|
+
Inject into `test_helper.rb` or `spec_helper.rb`:
|
25
|
+
|
26
|
+
require 'lurker/spec_helper'
|
27
|
+
|
17
28
|
## Usage
|
18
29
|
|
19
|
-
|
30
|
+
Wrap your intergation test code, which does request like this
|
31
|
+
|
32
|
+
Lurker::Spy.on do
|
33
|
+
get "/api/v1/users.json"
|
34
|
+
end
|
35
|
+
|
36
|
+
And run the specs and commit your schemas. That's all, easy!
|
37
|
+
|
38
|
+
## RSpec usage
|
39
|
+
|
40
|
+
Write your RSpec [controller][rspec_controller_spec] or [request][rspec_request_spec] specs as usual,
|
20
41
|
but add `:lurker` mark (like documented [controller example][controler_spec_example] or [request spec example][request_spec_example]).
|
21
42
|
|
22
|
-
|
23
|
-
|
43
|
+
it "lists users", :lurker do
|
44
|
+
get "/api/v1/users.json"
|
45
|
+
end
|
46
|
+
|
47
|
+
## Minitest usage
|
48
|
+
|
49
|
+
You can use [minitest-around][minitest_around] to wrap your test classes like this:
|
50
|
+
|
51
|
+
class DestroyRepoTest < ActionDispatch::IntegrationTest
|
52
|
+
def around(&block)
|
53
|
+
Lurker::Spy.on(&block)
|
54
|
+
end
|
55
|
+
end
|
24
56
|
|
25
|
-
|
57
|
+
You also can wrap any block with api requests [manually][minitest_example].
|
58
|
+
|
59
|
+
## Schemas
|
26
60
|
|
27
61
|
Please, commit your files under `Rails.root/lurker` directory.
|
28
62
|
Feel free to edit them according to [json-schema][json_schema] standart.
|
@@ -55,6 +89,20 @@ Let's run your `rails s` and visit [http://localhost:3000/lurker/](http://localh
|
|
55
89
|
|
56
90
|
Now, you can test your API on-line (for real)
|
57
91
|
|
92
|
+
## [Demo application][demo_app3]
|
93
|
+
|
94
|
+
You can clone the repo & run `rake build_example_docs && cd tmp/lurker_app && bin/rails s`
|
95
|
+
to get your running demo.
|
96
|
+
|
97
|
+
Lurker supports multiple domains (usually `staging` and `production`) and can be deployed
|
98
|
+
statically everywhere as well as be served by current `Rails` instance.
|
99
|
+
|
100
|
+
For example:
|
101
|
+
|
102
|
+
- [Github Pages][demo_app3] is deployed statically; no api endpoint
|
103
|
+
- [Custom domain][demo_app2] html deployed under nginx; passenger serves demo api production endpoint
|
104
|
+
- [Heroku][demo_app] html is served by unicorn as well as staging api endpoint in `Sandbox` mode
|
105
|
+
|
58
106
|
## Features
|
59
107
|
|
60
108
|
- [Autoscaffolding for non-covered API endpoints][controler_spec_example]
|
@@ -72,6 +120,7 @@ Now, you can test your API on-line (for real)
|
|
72
120
|
- JSON-Schema draft-v4 support
|
73
121
|
- Static site deploy and milti-domain support
|
74
122
|
- Builtin Rack middlware `Lurker::Server.to_rack` serves cached digested assets
|
123
|
+
- [RSpec][failed_spec_example] & [Minitest][minitest_example] support
|
75
124
|
|
76
125
|
## Token authentication with sandbox
|
77
126
|
|
@@ -90,20 +139,6 @@ are increasing notwithstanding ROLLBACK is called. As such:
|
|
90
139
|
- ensure the same token to be accepted on your demo application
|
91
140
|
- insert `Lurker::Sandbox` and the recorded examples should be ok to submit again
|
92
141
|
|
93
|
-
## [Demo application][demo_app3]
|
94
|
-
|
95
|
-
You can clone the repo & run `rake build_example_docs && cd tmp/lurker_app && bin/rails s`
|
96
|
-
to get your running demo.
|
97
|
-
|
98
|
-
Lurker supports multiple domains (usually `staging` and `production`) and can be deployed
|
99
|
-
statically everywhere as well as be served by current `Rails` instance.
|
100
|
-
|
101
|
-
For example:
|
102
|
-
|
103
|
-
- [Github Pages][demo_app3] is deployed statically; no api endpoint
|
104
|
-
- [Custom domain][demo_app2] html deployed under nginx; passenger serves demo api production endpoint
|
105
|
-
- [Heroku][demo_app] html is served by unicorn as well as staging api endpoint in `Sandbox` mode
|
106
|
-
|
107
142
|
## Contributions
|
108
143
|
|
109
144
|
[![Code Climate][CC img]][Code Climate]
|
@@ -140,7 +175,7 @@ so there are `<label htmlFor` instead of `<label for>` and `<div className` inst
|
|
140
175
|
|
141
176
|
Sponsored by [Evil Martians][evil_martians], thanks!
|
142
177
|
|
143
|
-
This gem is quite opinionated and relies on rails
|
178
|
+
This gem is quite opinionated and relies on rails - if you're
|
144
179
|
interested in anything else, please take a look at [api_taster][api_taster] or [fdoc][fdoc],
|
145
180
|
This gem is heavily inspirated by them. Thanks, @square & @fredwu
|
146
181
|
|
@@ -154,16 +189,16 @@ Also thanks to
|
|
154
189
|
[hljs]: http://highlightjs.org/
|
155
190
|
[waffle]: https://waffle.io/razum2um/lurker
|
156
191
|
[gh_api]: https://developer.github.com/v3/meta/
|
157
|
-
[rspec]: https://github.com/rspec/rspec-rails
|
158
192
|
[api_taster]: https://github.com/fredwu/api_taster
|
159
193
|
[reactjs]: http://facebook.github.io/react/
|
160
194
|
[fdoc]: https://github.com/square/fdoc
|
161
|
-
[rspec_controller_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs
|
162
|
-
[rspec_request_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec
|
163
195
|
[json_schema]: http://json-schema.org/
|
164
196
|
[json_schema_example]: http://json-schema.org/example2.html
|
165
197
|
[json_schema_book]: http://spacetelescope.github.io/understanding-json-schema/
|
166
198
|
[evil_martians]: http://evilmartians.com/
|
199
|
+
[rspec_controller_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs
|
200
|
+
[rspec_request_spec]: https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec
|
201
|
+
[minitest_around]: https://github.com/splattael/minitest-around
|
167
202
|
|
168
203
|
[failed_spec_example]: https://www.relishapp.com/razum2um/lurker/docs/test-endpoint
|
169
204
|
[controler_spec_example]: https://www.relishapp.com/razum2um/lurker/docs/controller-schema-scaffolding
|
@@ -172,12 +207,13 @@ Also thanks to
|
|
172
207
|
[html_generation_example]: https://www.relishapp.com/razum2um/lurker/docs/html-generation
|
173
208
|
[partial_example]: https://www.relishapp.com/razum2um/lurker/docs/partials
|
174
209
|
[suffixes_example]: https://www.relishapp.com/razum2um/lurker/docs/request-schema-suffixes
|
210
|
+
[minitest_example]: https://www.relishapp.com/razum2um/lurker/docs/minitest
|
175
211
|
|
176
212
|
[demo_app]: http://lurker-app.herokuapp.com
|
177
213
|
[demo_app2]: http://lurker.razum2um.me
|
178
214
|
[demo_app3]: http://razum2um.github.io/lurker/
|
179
215
|
[demo_live]: http://lurker.razum2um.me/lurker/api/v1/users-POST.html
|
180
|
-
[pdf_example]: http://razum2um.github.io/lurker/
|
216
|
+
[pdf_example]: http://razum2um.github.io/lurker/Lurker%20Demo%20Application.pdf
|
181
217
|
[partial_example_demo]: http://razum2um.github.io/lurker/api/v1/users/__user_id/repos-POST.html
|
182
218
|
|
183
219
|
[Gem Version]: https://rubygems.org/gems/lurker
|
data/Rakefile
CHANGED
@@ -302,7 +302,7 @@ task :publish do
|
|
302
302
|
system "git tag v#{version}"
|
303
303
|
system "relish versions:add razum2um/lurker:#{version}"
|
304
304
|
system "relish push razum2um/lurker:#{version}"
|
305
|
-
system "gem build lurker.gemspec
|
305
|
+
system "gem build lurker.gemspec"
|
306
306
|
system "git push --tags"
|
307
307
|
system "gem push lurker-#{version}.gem"
|
308
308
|
end
|
data/certs/razum2um.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApib2tv
|
3
|
+
di52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
|
4
|
+
b20wHhcNMTQwNTIwMjAyOTAyWhcNMTUwNTIwMjAyOTAyWjBBMRMwEQYDVQQDDApi
|
5
|
+
b2tvdi52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
|
6
|
+
FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCibrb/aiZX3kWo
|
7
|
+
Fmzo3gvGBFS9N18Q5rp9UTJRc4KxZQOay2WcgLjy1oU61r2Urjz3VDT4sg/yw3N3
|
8
|
+
YXIPqSTRl+OPIaafe45TVpF4mtMSsc1Gm/O3Sfoz6URiMd9iDtc2sTpaMgatL4pV
|
9
|
+
EExER9emjrmElRFknJD65E3gVDX7KXvrZYYAScJR33DADIGUgpuyHm29S7G/4WAy
|
10
|
+
ol6XfmPx+x5rM49QytGSNCQDYQ3SMMCo9wKkEm3Zcx0O4qhO8INevl/mvkAWLhOA
|
11
|
+
+0qldtuUx9wbBQ0D0wVR8LTafqWrIUHQjWXqrhWBqXhYeR3jj5aehBhpPFclHuKU
|
12
|
+
5GeILZrFAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
13
|
+
BBSiidH2CEJmkza+NBBJNLcnzQX57TAfBgNVHREEGDAWgRRib2tvdi52bGFkQGdt
|
14
|
+
YWlsLmNvbTAfBgNVHRIEGDAWgRRib2tvdi52bGFkQGdtYWlsLmNvbTANBgkqhkiG
|
15
|
+
9w0BAQUFAAOCAQEAVEyF63kQT9HKm3YIw1WzLvuOMvEUThzBomMMsTp9CGXWvem6
|
16
|
+
wZdMhxykwk1lga0OwsCn+wr1tWZ/cNeWqGSY00vTfLWdriK60xuRW7zT1Z5tmxbD
|
17
|
+
dq2ULdhII/qCFQlzDB/+IptO1rJLzfxTckoArmeYtkBV6LaVd7wpaRZnw0Apm93e
|
18
|
+
ph03YddPDbB34xTivvu4d6BBbKGxj/YN+1NLD9rMi6FspgcA4P1UlmKqyCluTbZj
|
19
|
+
vzKbYclpJ7gENr/xiTjGqA/Md3zJMzmsFrzUXt4RVmo5SaCyZjC6gFfhSr+PODc7
|
20
|
+
ZaSbckvH/+m4boAsg0JkGGFcS3j5fgNmdwgA1A==
|
21
|
+
-----END CERTIFICATE-----
|
@@ -18,7 +18,7 @@ Feature: controller nested schema scaffolding
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "lists all the repos of the user" do
|
21
|
-
get :index, user_id: user.id, limit: 1
|
21
|
+
get :index, user_id: user.id, limit: 1, format: 'json'
|
22
22
|
expect(response).to be_success
|
23
23
|
expect(JSON.parse(response.body).size).to eq 1
|
24
24
|
end
|
@@ -39,10 +39,6 @@ Feature: controller nested schema scaffolding
|
|
39
39
|
additionalProperties: false
|
40
40
|
required: []
|
41
41
|
properties:
|
42
|
-
user_id:
|
43
|
-
description: ''
|
44
|
-
type: integer
|
45
|
-
example: 1
|
46
42
|
limit:
|
47
43
|
description: ''
|
48
44
|
type: integer
|
@@ -73,13 +69,13 @@ Feature: controller nested schema scaffolding
|
|
73
69
|
example: 1
|
74
70
|
extensions:
|
75
71
|
method: GET
|
76
|
-
path_info: "/api/v1/users/1/repos"
|
72
|
+
path_info: "/api/v1/users/1/repos.json"
|
77
73
|
path_params:
|
78
|
-
action: index
|
79
|
-
controller: api/v1/repos
|
80
74
|
user_id: '1'
|
75
|
+
controller: api/v1/repos
|
76
|
+
action: index
|
81
77
|
query_params:
|
82
|
-
limit:
|
78
|
+
limit: 1
|
83
79
|
suffix: ''
|
84
80
|
|
85
81
|
"""
|
@@ -17,7 +17,7 @@ Feature: controller schema scaffolding
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "shows user" do
|
20
|
-
get :show, id: user.id
|
20
|
+
get :show, id: user.id, format: 'json'
|
21
21
|
expect(response).to be_success
|
22
22
|
end
|
23
23
|
end
|
@@ -36,11 +36,7 @@ Feature: controller schema scaffolding
|
|
36
36
|
type: object
|
37
37
|
additionalProperties: false
|
38
38
|
required: []
|
39
|
-
properties:
|
40
|
-
id:
|
41
|
-
description: ''
|
42
|
-
type: integer
|
43
|
-
example: 1
|
39
|
+
properties: {}
|
44
40
|
responseCodes:
|
45
41
|
- status: 200
|
46
42
|
successful: true
|
@@ -61,11 +57,11 @@ Feature: controller schema scaffolding
|
|
61
57
|
example: razum2um
|
62
58
|
extensions:
|
63
59
|
method: GET
|
64
|
-
path_info: "/api/v1/users/1"
|
60
|
+
path_info: "/api/v1/users/1.json"
|
65
61
|
path_params:
|
66
|
-
action: show
|
67
|
-
controller: api/v1/users
|
68
62
|
id: '1'
|
63
|
+
controller: api/v1/users
|
64
|
+
action: show
|
69
65
|
suffix: ''
|
70
66
|
|
71
67
|
"""
|
@@ -0,0 +1,140 @@
|
|
1
|
+
Feature: minitest
|
2
|
+
|
3
|
+
When you're testing your api with `minitest` and
|
4
|
+
`ActionDispatch::IntegrationTest`: you can
|
5
|
+
simply wrap your code in `Lurker::Spy.on do ... end`
|
6
|
+
|
7
|
+
Scenario: scaffold a json schema for a "repos/destroy" in minitest
|
8
|
+
Given a file named "test/integration/destroy_repo_test.rb" with:
|
9
|
+
"""ruby
|
10
|
+
require_relative '../test_helper'
|
11
|
+
|
12
|
+
class DestroyRepoTest < ActionDispatch::IntegrationTest
|
13
|
+
def test_destruction
|
14
|
+
user = User.where(name: 'razum2um').first_or_create!
|
15
|
+
repo = user.repos.first_or_create!(name: 'lurker')
|
16
|
+
|
17
|
+
assert_equal 1, Repo.count
|
18
|
+
|
19
|
+
Lurker::Spy.on do
|
20
|
+
delete "/api/v1/users/#{user.id}/repos/#{repo.id}.json"
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_equal 200, status
|
24
|
+
assert_equal 0, Repo.count
|
25
|
+
end
|
26
|
+
end
|
27
|
+
"""
|
28
|
+
|
29
|
+
When I run `ruby test/integration/destroy_repo_test.rb`
|
30
|
+
Then the output should contain unescaped these lines:
|
31
|
+
"""
|
32
|
+
1 (runs|tests), 3 assertions, 0 failures, 0 errors, 0 skips
|
33
|
+
"""
|
34
|
+
Then a file named "lurker/api/v1/users/__user_id/repos/__id-DELETE.json.yml" should exist
|
35
|
+
Then the file "lurker/api/v1/users/__user_id/repos/__id-DELETE.json.yml" should contain exactly:
|
36
|
+
"""yml
|
37
|
+
---
|
38
|
+
description: repo descruction
|
39
|
+
prefix: repos management
|
40
|
+
requestParameters:
|
41
|
+
description: ''
|
42
|
+
type: object
|
43
|
+
additionalProperties: false
|
44
|
+
required: []
|
45
|
+
properties: {}
|
46
|
+
responseCodes:
|
47
|
+
- status: 200
|
48
|
+
successful: true
|
49
|
+
description: ''
|
50
|
+
responseParameters:
|
51
|
+
description: ''
|
52
|
+
type: object
|
53
|
+
additionalProperties: false
|
54
|
+
required: []
|
55
|
+
properties: {}
|
56
|
+
extensions:
|
57
|
+
method: DELETE
|
58
|
+
path_info: "/api/v1/users/1/repos/1.json"
|
59
|
+
path_params:
|
60
|
+
action: destroy
|
61
|
+
controller: api/v1/repos
|
62
|
+
user_id: '1'
|
63
|
+
id: '1'
|
64
|
+
suffix: ''
|
65
|
+
|
66
|
+
"""
|
67
|
+
|
68
|
+
Scenario: json schema tests "users/update" in minitest
|
69
|
+
Given a file named "lurker/api/v1/users/__id-PATCH.json.yml" with:
|
70
|
+
"""yml
|
71
|
+
---
|
72
|
+
prefix: 'users management'
|
73
|
+
description: 'user updating'
|
74
|
+
requestParameters:
|
75
|
+
properties:
|
76
|
+
id:
|
77
|
+
type: integer
|
78
|
+
example: 1
|
79
|
+
user:
|
80
|
+
type: object
|
81
|
+
properties:
|
82
|
+
name:
|
83
|
+
type: string
|
84
|
+
example: Bob
|
85
|
+
responseCodes:
|
86
|
+
- status: 400
|
87
|
+
successful: true
|
88
|
+
description: ''
|
89
|
+
- status: 200
|
90
|
+
successful: true
|
91
|
+
description: ''
|
92
|
+
responseParameters:
|
93
|
+
properties:
|
94
|
+
id:
|
95
|
+
type: integer
|
96
|
+
example: 1
|
97
|
+
name:
|
98
|
+
type: string
|
99
|
+
example: Bob
|
100
|
+
extensions:
|
101
|
+
path_info: "/api/v1/users/1"
|
102
|
+
method: PATCH
|
103
|
+
suffix: ''
|
104
|
+
path_params:
|
105
|
+
action: update
|
106
|
+
controller: api/v1/users
|
107
|
+
id: 1
|
108
|
+
"""
|
109
|
+
|
110
|
+
And a file named "test/integration/update_user_test.rb" with:
|
111
|
+
"""ruby
|
112
|
+
require_relative '../test_helper'
|
113
|
+
|
114
|
+
class UpdateUserTest < ActionDispatch::IntegrationTest
|
115
|
+
def test_updating
|
116
|
+
user = User.where(name: 'razum2um').first_or_create!
|
117
|
+
assert_equal 1, User.count
|
118
|
+
|
119
|
+
Lurker::Spy.on do
|
120
|
+
patch "/api/v1/users/#{user.id}.json", user: { name: '' }
|
121
|
+
end
|
122
|
+
|
123
|
+
assert_equal 200, status
|
124
|
+
assert_equal 'John', user.reload.name
|
125
|
+
end
|
126
|
+
end
|
127
|
+
"""
|
128
|
+
|
129
|
+
When I run `ruby test/integration/update_user_test.rb`
|
130
|
+
Then the output should contain failures:
|
131
|
+
"""
|
132
|
+
Lurker::ValidationError:
|
133
|
+
Response
|
134
|
+
The property '#/' contains additional properties ["errors"]
|
135
|
+
|
136
|
+
"""
|
137
|
+
And the output should contain unescaped these lines:
|
138
|
+
"""
|
139
|
+
1 (runs|tests), 1 assertions, 0 failures, 1 errors, 0 skips
|
140
|
+
"""
|
data/features/partials.feature
CHANGED
@@ -42,7 +42,7 @@ Feature: partials
|
|
42
42
|
requestParameters:
|
43
43
|
properties:
|
44
44
|
user_id:
|
45
|
-
type:
|
45
|
+
type: string
|
46
46
|
example: 1
|
47
47
|
repo:
|
48
48
|
properties:
|
@@ -56,7 +56,7 @@ Feature: partials
|
|
56
56
|
$ref: '../../../../definitions/repo.json#/'
|
57
57
|
extensions:
|
58
58
|
method: POST
|
59
|
-
path_info: "/api/v1/users/1/repos"
|
59
|
+
path_info: "/api/v1/users/1/repos.json"
|
60
60
|
path_params:
|
61
61
|
action: create
|
62
62
|
controller: api/v1/repos
|
@@ -75,7 +75,7 @@ Feature: partials
|
|
75
75
|
|
76
76
|
it "creates a new repo" do
|
77
77
|
expect {
|
78
|
-
post "api/v1/users/#{user.id}/repos", repo: { name: 'new-gem' }
|
78
|
+
post "api/v1/users/#{user.id}/repos.json", repo: { name: 'new-gem' }
|
79
79
|
expect(response).to be_success
|
80
80
|
expect(JSON.parse(response.body)['user']).to eq JSON.parse(user.to_json)
|
81
81
|
}.to change { Repo.count } .by(1)
|