capybara-json 0.3.0.beta2 → 0.3.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/.travis.yml +2 -1
- data/CHANGELOG.md +2 -5
- data/Gemfile.capybara.lt.2.0 +5 -0
- data/README.md +6 -1
- data/VERSION +1 -1
- data/capybara-json.gemspec +1 -0
- data/lib/capybara/json.rb +2 -23
- data/lib/capybara/json/dsl.rb +31 -0
- data/spec/capybara/httpclient_json/dsl_spec.rb +9 -0
- data/spec/capybara/json_spec.rb +0 -36
- data/spec/capybara/rack_test_json/dsl_spec.rb +9 -0
- data/spec/support/driver_examples.rb +40 -6
- data/spec/support/dsl_examples.rb +77 -0
- metadata +29 -5
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
## 0.3.0
|
2
|
-
*
|
3
|
-
|
4
|
-
## 0.3.0.beta1
|
5
|
-
* Capybara 2.x support, but test not working now... (thanks to gkellogg)
|
1
|
+
## 0.3.0
|
2
|
+
* Capybara 2.x support (Thanks to @sonots, @gkellogg)
|
6
3
|
|
7
4
|
## 0.2.4
|
8
5
|
* Added __FILE__ and __LINE__ so that pry can find generated methods (thanks to @mad_p)
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# capybara-json [](http://travis-ci.org/okitan/capybara-json) [](https://gemnasium.com/okitan/capybara-json)
|
2
2
|
|
3
|
-
testing ruby: 1.9.2, 1.9.3
|
3
|
+
testing ruby: 1.9.2, 1.9.3; Capybara: 0.4.x, 1.1.x, 2.0.x
|
4
4
|
|
5
5
|
## About capybara-json
|
6
6
|
|
@@ -15,12 +15,15 @@ require 'capybara/json'
|
|
15
15
|
include Capybara::Json
|
16
16
|
|
17
17
|
Capybara.current_driver = :rack_test_json
|
18
|
+
Capybara.app = MyRackApp
|
18
19
|
post '/', { "this is" => "json" } # POST '/'
|
19
20
|
json #=> parsed json response
|
20
21
|
source #=> raw response body
|
21
22
|
get '/errors/400'
|
22
23
|
status_code #=> 400
|
23
24
|
get! '/errors' #=> raise Capybara::Json::Error
|
25
|
+
get '/errors', {}, { 'header' => '' } # request headers
|
26
|
+
response_headers #=> response headers
|
24
27
|
|
25
28
|
Capybara.current_driver = :httpclient_json
|
26
29
|
Capybara.app_host = 'http://example.com'
|
@@ -30,4 +33,6 @@ source #=> raw response body
|
|
30
33
|
get '/errors/400'
|
31
34
|
status_code #=> 400
|
32
35
|
get! '/errors' #=> raise Capybara::Json::Error
|
36
|
+
get '/errors', {}, { 'header' => '' } # request headers
|
37
|
+
response_headers #=> response headers
|
33
38
|
```
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.0
|
1
|
+
0.3.0
|
data/capybara-json.gemspec
CHANGED
data/lib/capybara/json.rb
CHANGED
@@ -11,31 +11,10 @@ module Capybara
|
|
11
11
|
|
12
12
|
def self.included(base)
|
13
13
|
base.__send__(:include, to_include) unless base < to_include
|
14
|
-
base.
|
15
|
-
end
|
16
|
-
|
17
|
-
%w[ get get! delete delete! ].each do |method|
|
18
|
-
module_eval <<-DEF, __FILE__, __LINE__ + 1
|
19
|
-
def #{method}(path, params = {}, env = {})
|
20
|
-
page.driver.#{method}(path, params, env)
|
21
|
-
end
|
22
|
-
DEF
|
23
|
-
end
|
24
|
-
|
25
|
-
%w[ post post! put put! ].each do |method|
|
26
|
-
module_eval <<-DEF, __FILE__, __LINE__ + 1
|
27
|
-
def #{method}(path, json, env = {})
|
28
|
-
page.driver.#{method}(path, json, env)
|
29
|
-
end
|
30
|
-
DEF
|
31
|
-
end
|
32
|
-
|
33
|
-
%w[ raw_json json ].each do |method|
|
34
|
-
define_method(method) do
|
35
|
-
page.driver.__send__(method)
|
36
|
-
end
|
14
|
+
base.__send__(:include, ::Capybara::Json::Dsl)
|
37
15
|
end
|
38
16
|
|
17
|
+
autoload :Dsl, 'capybara/json/dsl'
|
39
18
|
autoload :Error, 'capybara/json/error'
|
40
19
|
|
41
20
|
module Driver
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Capybara
|
2
|
+
module Json
|
3
|
+
module Dsl
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(self)
|
6
|
+
end
|
7
|
+
|
8
|
+
%w[ get get! delete delete! ].each do |method|
|
9
|
+
module_eval <<-DEF, __FILE__, __LINE__ + 1
|
10
|
+
def #{method}(path, params = {}, env = {})
|
11
|
+
page.driver.#{method}(path, params, env)
|
12
|
+
end
|
13
|
+
DEF
|
14
|
+
end
|
15
|
+
|
16
|
+
%w[ post post! put put! ].each do |method|
|
17
|
+
module_eval <<-DEF, __FILE__, __LINE__ + 1
|
18
|
+
def #{method}(path, json, env = {})
|
19
|
+
page.driver.#{method}(path, json, env)
|
20
|
+
end
|
21
|
+
DEF
|
22
|
+
end
|
23
|
+
|
24
|
+
%w[ raw_json json source body status_code response_headers ].each do |method|
|
25
|
+
define_method(method) do
|
26
|
+
page.driver.__send__(method)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/capybara/json_spec.rb
CHANGED
@@ -6,40 +6,4 @@ require 'spec_helper'
|
|
6
6
|
Capybara.drivers.should have_key(driver)
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
10
|
-
describe Capybara::Json do
|
11
|
-
include described_class
|
12
|
-
|
13
|
-
before(:all) do
|
14
|
-
Capybara.app = JsonTestApp
|
15
|
-
Capybara.current_driver = driver
|
16
|
-
end
|
17
|
-
|
18
|
-
after(:all) do
|
19
|
-
Capybara.app = nil
|
20
|
-
Capybara.current_driver = Capybara.default_driver
|
21
|
-
end
|
22
|
-
|
23
|
-
%w[ get get! delete delete! ].each do |method|
|
24
|
-
it "register #{method}" do
|
25
|
-
__send__(method, '/')
|
26
|
-
body.should == { 'Hello world!' => 'Hello world!' }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
%w[ post post! put put! ].each do |method|
|
31
|
-
it "register #{method}" do
|
32
|
-
__send__(method, '/', {})
|
33
|
-
body.should == { 'Hello world!' => 'Hello world!' }
|
34
|
-
end
|
35
|
-
|
36
|
-
it "#{method} send json" do
|
37
|
-
json = { "some" => "args" }
|
38
|
-
__send__(method, '/env', json)
|
39
|
-
|
40
|
-
body['content_type'].should =~ %r"application/json"
|
41
|
-
body['rack.input'].should == MultiJson.dump(json)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
9
|
end
|
@@ -1,12 +1,6 @@
|
|
1
|
-
require 'capybara/spec/driver'
|
2
|
-
|
3
1
|
# this code is written in capybara's spec/spec_helper
|
4
2
|
alias :running :lambda
|
5
3
|
|
6
|
-
[ 'driver', 'driver with header support' ].each do |shared|
|
7
|
-
RSpec.world.shared_example_groups.delete(shared)
|
8
|
-
end
|
9
|
-
|
10
4
|
shared_examples_for 'driver' do
|
11
5
|
describe '#visit' do
|
12
6
|
it "should move to another page" do
|
@@ -64,6 +58,45 @@ shared_examples_for 'driver with custom header support' do
|
|
64
58
|
end
|
65
59
|
end
|
66
60
|
|
61
|
+
shared_examples_for "driver with status code support" do
|
62
|
+
it "should make the status code available through status_code" do
|
63
|
+
@driver.visit('/with_simple_html')
|
64
|
+
@driver.status_code.should == 200
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
shared_examples_for "driver with cookies support" do
|
69
|
+
describe "#reset!" do
|
70
|
+
it "should set and clean cookies" do
|
71
|
+
@driver.visit('/get_cookie')
|
72
|
+
@driver.body.should_not include('test_cookie')
|
73
|
+
|
74
|
+
@driver.visit('/set_cookie')
|
75
|
+
@driver.body.should include('Cookie set to test_cookie')
|
76
|
+
|
77
|
+
@driver.visit('/get_cookie')
|
78
|
+
@driver.body.should include('test_cookie')
|
79
|
+
|
80
|
+
@driver.reset!
|
81
|
+
@driver.visit('/get_cookie')
|
82
|
+
@driver.body.should_not include('test_cookie')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
shared_examples_for "driver with infinite redirect detection" do
|
88
|
+
it "should follow 5 redirects" do
|
89
|
+
@driver.visit('/redirect/5/times')
|
90
|
+
@driver.body.should include('redirection complete')
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should not follow more than 5 redirects" do
|
94
|
+
running do
|
95
|
+
@driver.visit('/redirect/6/times')
|
96
|
+
end.should raise_error(Capybara::InfiniteRedirectError)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
67
100
|
shared_examples_for "driver with redirect support" do
|
68
101
|
it "should update current_url" do
|
69
102
|
@driver.get "/redirect"
|
@@ -76,6 +109,7 @@ shared_examples_for "driver not to follow redirect" do
|
|
76
109
|
@driver.get "/redirect"
|
77
110
|
@driver.status_code.should == 302
|
78
111
|
URI.parse(@driver.current_url).path.should == "/redirect"
|
112
|
+
URI.parse(@driver.response_headers["Location"]).path.should == "/redirect_again"
|
79
113
|
end
|
80
114
|
end
|
81
115
|
|
@@ -0,0 +1,77 @@
|
|
1
|
+
shared_context 'prepare_dsl' do
|
2
|
+
include Capybara::Json
|
3
|
+
|
4
|
+
before do
|
5
|
+
Capybara.app = JsonTestApp
|
6
|
+
Capybara.current_driver = @driver
|
7
|
+
@default_follow_redirect = page.driver.options[:follow_redirect]
|
8
|
+
end
|
9
|
+
|
10
|
+
after do
|
11
|
+
page.driver.options[:follow_redirect] = @default_follow_redirect
|
12
|
+
Capybara.app = nil
|
13
|
+
Capybara.current_driver = Capybara.default_driver
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
shared_examples_for 'dsl' do
|
18
|
+
include_context 'prepare_dsl'
|
19
|
+
|
20
|
+
%w[ get get! delete delete! ].each do |method|
|
21
|
+
it "register #{method}" do
|
22
|
+
__send__(method, '/')
|
23
|
+
body.should == { 'Hello world!' => 'Hello world!' }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
%w[ post post! put put! ].each do |method|
|
28
|
+
it "register #{method}" do
|
29
|
+
__send__(method, '/', {})
|
30
|
+
body.should == { 'Hello world!' => 'Hello world!' }
|
31
|
+
end
|
32
|
+
|
33
|
+
it "#{method} send json" do
|
34
|
+
json = { "some" => "args" }
|
35
|
+
__send__(method, '/env', json)
|
36
|
+
|
37
|
+
body['content_type'].should =~ %r"application/json"
|
38
|
+
body['rack.input'].should == MultiJson.dump(json)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
%w[ raw_json source ].each do |method|
|
43
|
+
it "register #{method}" do
|
44
|
+
get('/', {})
|
45
|
+
__send__(method).should == MultiJson.dump({ 'Hello world!' => 'Hello world!' })
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
%w[ json body ].each do |method|
|
50
|
+
it "register #{method}" do
|
51
|
+
get('/', {})
|
52
|
+
__send__(method).should == { 'Hello world!' => 'Hello world!' }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
shared_examples_for 'dsl with redirect support' do
|
58
|
+
include_context 'prepare_dsl'
|
59
|
+
|
60
|
+
it "should update current_url" do
|
61
|
+
page.driver.options[:follow_redirect] = true
|
62
|
+
get "/redirect"
|
63
|
+
URI.parse(current_url).path.should == "/landed"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
shared_examples_for "dsl not to follow redirect" do
|
68
|
+
include_context 'prepare_dsl'
|
69
|
+
|
70
|
+
it "should not follow redirect" do
|
71
|
+
page.driver.options[:follow_redirect] = false
|
72
|
+
get "/redirect"
|
73
|
+
status_code.should == 302
|
74
|
+
URI.parse(current_url).path.should == "/redirect"
|
75
|
+
URI.parse(response_headers["Location"]).path.should == "/redirect_again"
|
76
|
+
end
|
77
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- okitan
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capybara
|
@@ -187,6 +187,22 @@ dependencies:
|
|
187
187
|
- - ! '>='
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: '0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: pry-debugger
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
type: :development
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
190
206
|
description: for testing json-api
|
191
207
|
email:
|
192
208
|
- okitakunio@gmail.com
|
@@ -203,6 +219,7 @@ files:
|
|
203
219
|
- CHANGELOG.md
|
204
220
|
- Gemfile
|
205
221
|
- Gemfile.capybara.lt.1.0
|
222
|
+
- Gemfile.capybara.lt.2.0
|
206
223
|
- README.md
|
207
224
|
- Rakefile
|
208
225
|
- VERSION
|
@@ -211,15 +228,19 @@ files:
|
|
211
228
|
- lib/capybara/httpclient_json/driver.rb
|
212
229
|
- lib/capybara/json.rb
|
213
230
|
- lib/capybara/json/driver/base.rb
|
231
|
+
- lib/capybara/json/dsl.rb
|
214
232
|
- lib/capybara/json/error.rb
|
215
233
|
- lib/capybara/rack_test_json/client.rb
|
216
234
|
- lib/capybara/rack_test_json/driver.rb
|
217
235
|
- spec/capybara/httpclient_json/driver_spec.rb
|
236
|
+
- spec/capybara/httpclient_json/dsl_spec.rb
|
218
237
|
- spec/capybara/json_spec.rb
|
219
238
|
- spec/capybara/rack_test_json/driver_spec.rb
|
239
|
+
- spec/capybara/rack_test_json/dsl_spec.rb
|
220
240
|
- spec/spec.watchr
|
221
241
|
- spec/spec_helper.rb
|
222
242
|
- spec/support/driver_examples.rb
|
243
|
+
- spec/support/dsl_examples.rb
|
223
244
|
- spec/support/json_test_app.rb
|
224
245
|
homepage: http://github.com/okitan/capybara-json
|
225
246
|
licenses: []
|
@@ -236,9 +257,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
236
257
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
258
|
none: false
|
238
259
|
requirements:
|
239
|
-
- - ! '
|
260
|
+
- - ! '>='
|
240
261
|
- !ruby/object:Gem::Version
|
241
|
-
version:
|
262
|
+
version: '0'
|
242
263
|
requirements: []
|
243
264
|
rubyforge_project: capybara-json
|
244
265
|
rubygems_version: 1.8.24
|
@@ -247,10 +268,13 @@ specification_version: 3
|
|
247
268
|
summary: for testing json-api
|
248
269
|
test_files:
|
249
270
|
- spec/capybara/httpclient_json/driver_spec.rb
|
271
|
+
- spec/capybara/httpclient_json/dsl_spec.rb
|
250
272
|
- spec/capybara/json_spec.rb
|
251
273
|
- spec/capybara/rack_test_json/driver_spec.rb
|
274
|
+
- spec/capybara/rack_test_json/dsl_spec.rb
|
252
275
|
- spec/spec.watchr
|
253
276
|
- spec/spec_helper.rb
|
254
277
|
- spec/support/driver_examples.rb
|
278
|
+
- spec/support/dsl_examples.rb
|
255
279
|
- spec/support/json_test_app.rb
|
256
280
|
has_rdoc:
|