capybara-typhoeus 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/capybara/driver/typhoeus_driver.rb +17 -14
- data/lib/capybara/typhoeus.rb +3 -1
- data/spec/session/typhoeus_spec.rb +8 -9
- data/spec/spec_helper.rb +2 -2
- metadata +94 -14
- data/lib/capybara/spec/extended_test_app.rb +0 -17
@@ -13,7 +13,7 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
13
13
|
def client
|
14
14
|
@client ||= Typhoeus::Hydra.new
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def initialize(app, options={})
|
18
18
|
@app = app
|
19
19
|
@options = options
|
@@ -25,7 +25,7 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
25
25
|
reset_cache
|
26
26
|
process :get, url, params
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def get(url, params = {}, headers = {})
|
30
30
|
reset_cache
|
31
31
|
process :get, url, params, headers
|
@@ -60,7 +60,7 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
60
60
|
reset_cache
|
61
61
|
process :request, url, params, headers
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
def submit(method, path, attributes)
|
65
65
|
path = request.path if not path or path.empty?
|
66
66
|
process method.to_sym, path, attributes
|
@@ -69,24 +69,24 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
69
69
|
def find(selector)
|
70
70
|
dom.xpath(selector).map { |node| Node.new(self, node) }
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
def html
|
74
74
|
@html ||= Nokogiri::HTML body
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
def xml
|
78
78
|
@xml ||= Nokogiri::XML body
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
def json
|
82
82
|
@json ||= Yajl::Parser.parse body
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
def body
|
86
86
|
response.body
|
87
87
|
end
|
88
88
|
alias_method :source, :body
|
89
|
-
|
89
|
+
|
90
90
|
def response_headers
|
91
91
|
response.headers_hash
|
92
92
|
end
|
@@ -94,28 +94,28 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
94
94
|
def status_code
|
95
95
|
response.code
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
def current_url
|
99
99
|
@current_uri.to_s
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
def reset!
|
103
103
|
@client = nil
|
104
104
|
@response = nil
|
105
105
|
@current_uri = nil
|
106
106
|
reset_cache
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
def reset_with!
|
110
110
|
@with_headers = {}
|
111
111
|
@with_params = {}
|
112
112
|
@with_options = {}
|
113
113
|
end
|
114
|
-
|
114
|
+
|
115
115
|
def as
|
116
116
|
@as ||= "application/json"
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
119
|
def with_headers
|
120
120
|
@with_headers ||= {}
|
121
121
|
end
|
@@ -144,8 +144,11 @@ class Capybara::Driver::Typhoeus < Capybara::Driver::Base
|
|
144
144
|
request = Typhoeus::Request.new @current_uri, with_options.merge(opts)
|
145
145
|
client.queue request
|
146
146
|
client.run
|
147
|
+
# $stdout.puts request.inspect
|
147
148
|
@response = request.response
|
149
|
+
# $stdout.puts response.inspect
|
148
150
|
if @response.timed_out?
|
151
|
+
`open #{@current_uri}`
|
149
152
|
$stderr.puts "#{method.to_s.upcase} #{@current_uri}: time out"
|
150
153
|
elsif @response.code==0
|
151
154
|
$stderr.puts "#{method.to_s.upcase} #{@current_uri}: #{@response.curl_error_message}"
|
@@ -177,4 +180,4 @@ private
|
|
177
180
|
@json = nil
|
178
181
|
end
|
179
182
|
|
180
|
-
end
|
183
|
+
end
|
data/lib/capybara/typhoeus.rb
CHANGED
@@ -10,6 +10,14 @@ describe Capybara::Session do
|
|
10
10
|
@session = TestSessions::Typhoeus
|
11
11
|
end
|
12
12
|
|
13
|
+
after do
|
14
|
+
@session.reset_session!
|
15
|
+
end
|
16
|
+
|
17
|
+
def extract_results(session)
|
18
|
+
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text
|
19
|
+
end
|
20
|
+
|
13
21
|
describe '#driver' do
|
14
22
|
it "should be a typhoeus driver" do
|
15
23
|
@session.driver.should be_an_instance_of Capybara::Driver::Typhoeus
|
@@ -22,14 +30,6 @@ describe Capybara::Session do
|
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
25
|
-
def extract_results(session)
|
26
|
-
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text
|
27
|
-
end
|
28
|
-
|
29
|
-
after do
|
30
|
-
@session.reset!
|
31
|
-
end
|
32
|
-
|
33
33
|
describe '#app' do
|
34
34
|
it "should remember the application" do
|
35
35
|
@session.app.should == TestApp
|
@@ -67,7 +67,6 @@ describe Capybara::Session do
|
|
67
67
|
it_should_behave_like "find_by_id"
|
68
68
|
it_should_behave_like "has_content"
|
69
69
|
it_should_behave_like "has_css"
|
70
|
-
it_should_behave_like "has_css"
|
71
70
|
it_should_behave_like "has_selector"
|
72
71
|
it_should_behave_like "has_xpath"
|
73
72
|
it_should_behave_like "has_link"
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require 'capybara'
|
3
3
|
require 'capybara/typhoeus'
|
4
|
-
require 'capybara/spec/
|
4
|
+
require 'capybara/spec/test_app'
|
5
5
|
require 'capybara/spec/driver'
|
6
6
|
require 'capybara/spec/session'
|
7
7
|
|
@@ -13,4 +13,4 @@ RSpec.configure do |config|
|
|
13
13
|
config.after do
|
14
14
|
Capybara.default_selector = :xpath
|
15
15
|
end
|
16
|
-
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara-typhoeus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,41 +10,120 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-04-22 00:00:00.
|
13
|
+
date: 2011-04-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capybara
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.1.
|
22
|
+
version: 1.1.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.1.2
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: typhoeus
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ~>
|
32
37
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.3.
|
38
|
+
version: 0.3.3
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.3.3
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: yajl-ruby
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ~>
|
43
53
|
- !ruby/object:Gem::Version
|
44
|
-
version: 1.0
|
54
|
+
version: '1.0'
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rake
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: rspec
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rack
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sinatra
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
48
127
|
description: Typhoeus driver for Capybara, allowing testing of REST APIs
|
49
128
|
email: joseph.halter@thetalentbox.com
|
50
129
|
executables: []
|
@@ -52,7 +131,6 @@ extensions: []
|
|
52
131
|
extra_rdoc_files: []
|
53
132
|
files:
|
54
133
|
- lib/capybara/driver/typhoeus_driver.rb
|
55
|
-
- lib/capybara/spec/extended_test_app.rb
|
56
134
|
- lib/capybara/typhoeus/cucumber.rb
|
57
135
|
- lib/capybara/typhoeus.rb
|
58
136
|
- spec/driver/typhoeus_driver_spec.rb
|
@@ -72,6 +150,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
72
150
|
- - ! '>='
|
73
151
|
- !ruby/object:Gem::Version
|
74
152
|
version: '0'
|
153
|
+
segments:
|
154
|
+
- 0
|
155
|
+
hash: -3419795448248900470
|
75
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
157
|
none: false
|
77
158
|
requirements:
|
@@ -80,9 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
161
|
version: '0'
|
81
162
|
requirements: []
|
82
163
|
rubyforge_project:
|
83
|
-
rubygems_version: 1.8.
|
164
|
+
rubygems_version: 1.8.24
|
84
165
|
signing_key:
|
85
166
|
specification_version: 3
|
86
167
|
summary: Typhoeus driver for Capybara
|
87
168
|
test_files: []
|
88
|
-
has_rdoc:
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'capybara/spec/test_app'
|
2
|
-
|
3
|
-
class ExtendedTestApp < TestApp
|
4
|
-
set :environment, :production
|
5
|
-
|
6
|
-
get %r{/redirect_to/(.*)} do
|
7
|
-
redirect params[:captures]
|
8
|
-
end
|
9
|
-
|
10
|
-
get '/host' do
|
11
|
-
"current host is #{request.host}"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
if __FILE__ == $0
|
16
|
-
Rack::Handler::Mongrel.run ExtendedTestApp, :Port => 8070
|
17
|
-
end
|