mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Define the url_options
needed for SytemTest inside the route proxy:
- I made a change in https://github.com/rails/rails/pull/36691 to delegate route helper to a proxy class. This didn't take into account that the `url_options` we redefine in SystemTest would be ignored. This PR fixes that by definin the url_options inside the proxy
This commit is contained in:
parent
31105c81cc
commit
e6cf57df8a
2 changed files with 52 additions and 5 deletions
|
@ -120,7 +120,13 @@ module ActionDispatch
|
||||||
super
|
super
|
||||||
self.class.driver.use
|
self.class.driver.use
|
||||||
@proxy_route = if ActionDispatch.test_app
|
@proxy_route = if ActionDispatch.test_app
|
||||||
Class.new { include ActionDispatch.test_app.routes.url_helpers }.new
|
Class.new do
|
||||||
|
include ActionDispatch.test_app.routes.url_helpers
|
||||||
|
|
||||||
|
def url_options
|
||||||
|
default_url_options.merge(host: Capybara.app_host)
|
||||||
|
end
|
||||||
|
end.new
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
@ -164,10 +170,6 @@ module ActionDispatch
|
||||||
|
|
||||||
driven_by :selenium
|
driven_by :selenium
|
||||||
|
|
||||||
def url_options # :nodoc:
|
|
||||||
default_url_options.merge(host: Capybara.app_host)
|
|
||||||
end
|
|
||||||
|
|
||||||
def method_missing(method, *args, &block)
|
def method_missing(method, *args, &block)
|
||||||
if @proxy_route.respond_to?(method)
|
if @proxy_route.respond_to?(method)
|
||||||
@proxy_route.send(method, *args, &block)
|
@proxy_route.send(method, *args, &block)
|
||||||
|
|
45
railties/test/application/system_test_case_test.rb
Normal file
45
railties/test/application/system_test_case_test.rb
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "isolation/abstract_unit"
|
||||||
|
require "rack/test"
|
||||||
|
|
||||||
|
class SystemTestCaseTest < ActiveSupport::TestCase
|
||||||
|
include ActiveSupport::Testing::Isolation
|
||||||
|
|
||||||
|
def setup
|
||||||
|
build_app
|
||||||
|
end
|
||||||
|
|
||||||
|
def teardown
|
||||||
|
teardown_app
|
||||||
|
end
|
||||||
|
|
||||||
|
test "url helpers are delegated to a proxy class" do
|
||||||
|
app_file "config/routes.rb", <<-RUBY
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
get 'foo', to: 'foo#index', as: 'test_foo'
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
app("test")
|
||||||
|
|
||||||
|
assert_not_includes(ActionDispatch::SystemTestCase.runnable_methods, :test_foo_url)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "system tests set the Capybara host in the url_options by default" do
|
||||||
|
app_file "config/routes.rb", <<-RUBY
|
||||||
|
Rails.application.routes.draw do
|
||||||
|
get 'foo', to: 'foo#index', as: 'test_foo'
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
app("test")
|
||||||
|
system_test = ActionDispatch::SystemTestCase.new("my_test")
|
||||||
|
previous_app_host = ::Capybara.app_host
|
||||||
|
::Capybara.app_host = "https://my_test_example.com"
|
||||||
|
|
||||||
|
assert_equal("https://my_test_example.com/foo", system_test.test_foo_url)
|
||||||
|
ensure
|
||||||
|
::Capybara.app_host = previous_app_host
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue