1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/actionpack/test/routing/helper_test.rb
@schneems and @sgrif 2bbcca004c Deprecate *_path methods in mailers
Email does not support relative links since there is no implicit host. Therefore all links inside of emails must be fully qualified URLs. All path helpers are now deprecated. When removed, the error will give early indication to developers to use `*_url` methods instead.

Currently if a developer uses a `*_path` helper, their tests and `mail_view` will not catch the mistake. The only way to see the error is by sending emails in production. Preventing sending out emails with non-working path's is the desired end goal of this PR.

Currently path helpers are mixed-in to controllers (the ActionMailer::Base acts as a controller). All `*_url` and `*_path` helpers are made available through the same module. This PR separates this behavior into two modules so we can extend the `*_path` methods to add a Deprecation to them. Once deprecated we can use this same area to raise a NoMethodError and add an informative message directing the developer to use `*_url` instead.

The module with warnings is only mixed in when a controller returns false from the newly added `supports_relative_path?`.

Paired @sgrif & @schneems
2014-07-30 12:01:45 -05:00

45 lines
931 B
Ruby

require 'abstract_unit'
module ActionDispatch
module Routing
class HelperTest < ActiveSupport::TestCase
class Duck
def to_param
nil
end
end
def test_exception
rs = ::ActionDispatch::Routing::RouteSet.new
rs.draw do
resources :ducks do
member do
get :pond
end
end
end
x = Class.new {
include rs.url_helpers
}
assert_raises ActionController::UrlGenerationError do
x.new.pond_duck_path Duck.new
end
end
def test_path_deprecation
rs = ::ActionDispatch::Routing::RouteSet.new
rs.draw do
resources :ducks
end
x = Class.new {
include rs.url_helpers(false)
}
assert_deprecated do
assert_equal '/ducks', x.new.ducks_path
end
end
end
end
end