capybara 2.15.3 → 2.15.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 900f8b3c6c40c11e73ea6b87c66f457f5dc31ba4
4
- data.tar.gz: cc898006a411581c3496edf13da7beedca981972
3
+ metadata.gz: b58346a93d1b784ad960451eea0e16c2cdb5264a
4
+ data.tar.gz: 6386e073e35c61290e7fdf77353d06f1b887af08
5
5
  SHA512:
6
- metadata.gz: 6a67ce2f18bd4995585b190df6483210f47782282df576d3e46655942f0ec23b962b52027a03fd97f4de48eefa73f931c3675a78388c6341b30c8394961771c0
7
- data.tar.gz: '01017609801364f823592cf2a318264613d73e1b6b901e29ab78dbb88612e9694952f5172fa947b8ffc8cb48b9b0f2487768357b2ea81f939276bf53512ac043'
6
+ metadata.gz: 5bf103e7ee612aa2ba02f530d77c7cd01430d43df2ac4221a40b8b415e1ccf7f41df84d3ea6795f6629f9d019521169a868dce350c26f4c65d764e92c743f13e
7
+ data.tar.gz: e94720fb414e4715748628717a13270372e3e1f1238fb8d36e8811d0060782f86a1ff851fdb1b1e78e8624cd4e3d5c6cb72b6de7af5a5b9276bf4098e15e0717
data/History.md CHANGED
@@ -1,5 +1,11 @@
1
+ # Version 2.15.4
2
+ Release date: 2017-10-07
3
+
4
+ ### Fixed
5
+ * Visiting an absolute URL shouldn't overwrite the port when no server or always_include_port=false - Issue #1921
6
+
1
7
  # Version 2.15.3
2
- Release date: Unreleased
8
+ Release date: 2017-10-03
3
9
 
4
10
  ### Fixed
5
11
  * Visiting '/' when Capybara.app_host has a trailing '/' - Issue #1918 [Thomas Walpole]
@@ -69,7 +69,7 @@ module Capybara
69
69
  # === Configurable options
70
70
  #
71
71
  # [app_host = String/nil] The default host to use when giving a relative URL to visit, must be a valid URL e.g. http://www.example.com
72
- # [always_include_port = Boolean] Whether the Rack server's port should automatically be inserted into every visited URL (Default: false)
72
+ # [always_include_port = Boolean] Whether the Rack server's port should automatically be inserted into every visited URL unless another port is explicitly specified (Default: false)
73
73
  # [asset_host = String] Where dynamic assets are hosted - will be prepended to relative asset locations if present (Default: nil)
74
74
  # [run_server = Boolean] Whether to start a Rack server for the given Rack app (Default: true)
75
75
  # [raise_server_errors = Boolean] Should errors raised in the server be raised in the tests? (Default: true)
@@ -255,21 +255,24 @@ module Capybara
255
255
  config.app_host && ::Addressable::URI.parse(config.app_host)
256
256
  end
257
257
 
258
- uri_base.port ||= @server.port if @server && config.always_include_port
259
-
260
258
  if uri_base && [nil, 'http', 'https'].include?(visit_uri.scheme)
261
- visit_uri_parts = visit_uri.to_hash.delete_if { |k,v| v.nil? }
259
+ if visit_uri.relative?
260
+ uri_base.port ||= @server.port if @server && config.always_include_port
261
+
262
+ visit_uri_parts = visit_uri.to_hash.delete_if { |k,v| v.nil? }
262
263
 
263
- if visit_uri.scheme.nil?
264
264
  # TODO - this is only for compatability with previous 2.x behavior that concatenated
265
265
  # Capybara.app_host and a "relative" path - Consider removing in 3.0
266
266
  # @abotalov brought up a good point about this behavior potentially being useful to people
267
267
  # deploying to a subdirectory and/or single page apps where only the url fragment changes
268
268
  visit_uri_parts[:path] = uri_base.path + visit_uri.path
269
- end
270
269
 
271
- visit_uri = uri_base.merge(visit_uri_parts)
270
+ visit_uri = uri_base.merge(visit_uri_parts)
271
+ else
272
+ visit_uri.port ||= @server.port if @server && config.always_include_port
273
+ end
272
274
  end
275
+
273
276
  driver.visit(visit_uri.to_s)
274
277
  end
275
278
 
@@ -80,8 +80,41 @@ Capybara::SpecHelper.spec '#visit' do
80
80
  @session.visit('/random')
81
81
  end
82
82
 
83
+ it "shouldn't override port if no server", requires: [:server] do
84
+ session = Capybara::Session.new(@session.mode, nil)
85
+ expect(session.driver).to receive(:visit).with("http://www.google.com")
86
+ session.visit("http://www.google.com")
87
+ end
88
+
89
+ it "shouldn't override port if no server but app_host is set", requires: [:server] do
90
+ session = Capybara::Session.new(@session.mode, nil)
91
+ Capybara.app_host = "http://www.example.com:6666"
92
+ expect(session.driver).to receive(:visit).with("http://www.google.com")
93
+ session.visit("http://www.google.com")
94
+ end
95
+ end
96
+
97
+ context "when Capybara.always_include_port is false" do
98
+ before(:each) do
99
+ Capybara.always_include_port = false
100
+ end
101
+
102
+ it "shouldn't overwrite port if app_host is set", requires: [:server] do
103
+ session = Capybara::Session.new(@session.mode, nil)
104
+ Capybara.app_host = "http://www.example.com:6666"
105
+ expect(session.driver).to receive(:visit).with("http://www.google.com")
106
+ session.visit("http://www.google.com")
107
+ end
108
+
109
+ it "shouldn't overwrite port if port specfified", requires: [:server] do
110
+ session = Capybara::Session.new(@session.mode, nil)
111
+ Capybara.app_host = "http://www.example.com:6666"
112
+ expect(session.driver).to receive(:visit).with("http://www.google.com:99")
113
+ session.visit("http://www.google.com:99")
114
+ end
83
115
  end
84
116
 
117
+
85
118
  context "without a server", requires: [:server] do
86
119
  it "should respect `app_host`" do
87
120
  serverless_session = Capybara::Session.new(@session.mode, nil)
@@ -101,7 +101,7 @@ Capybara::SpecHelper.spec '#within' do
101
101
  expect do
102
102
  @session.within(".//div[@id='doesnotexist']") do
103
103
  end
104
- end.to raise_error(Capybara::ElementNotFound, %Q{Unable to find visible xpath ".//div[@id='doesnotexist']" within #<Capybara::Node::Element tag="div" path="/html/body/div[1]">})
104
+ end.to raise_error(Capybara::ElementNotFound)
105
105
  end.to_not change { @session.has_xpath?(".//div[@id='another_foo']") }.from(false)
106
106
  end
107
107
  end.to_not change { @session.has_xpath?(".//div[@id='another_foo']") }.from(true)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Capybara
3
- VERSION = '2.15.3'
3
+ VERSION = '2.15.4'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.15.3
4
+ version: 2.15.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2017-10-03 00:00:00.000000000 Z
13
+ date: 2017-10-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri