1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

fix with_routing when testing api only controllers

This commit is contained in:
Julia López 2016-12-21 17:08:46 +01:00
parent 8c54783844
commit f28d073a39
3 changed files with 33 additions and 2 deletions

View file

@ -1,3 +1,7 @@
* Make `with_routing` test helper work when testing controllers inheriting from `ActionController::API`
*Julia López*
* Use accept header in integration tests with `as: :json`
Instead of appending the `format` to the request path, Rails will figure

View file

@ -152,8 +152,11 @@ module ActionDispatch
_routes = @routes
@controller.singleton_class.include(_routes.url_helpers)
@controller.view_context_class = Class.new(@controller.view_context_class) do
include _routes.url_helpers
if @controller.respond_to? :view_context_class
@controller.view_context_class = Class.new(@controller.view_context_class) do
include _routes.url_helpers
end
end
end
yield @routes

View file

@ -128,6 +128,16 @@ module Admin
end
end
class ApiOnlyController < ActionController::API
def nothing
head :ok
end
def redirect_to_new_route
redirect_to new_route_url
end
end
class ActionPackAssertionsControllerTest < ActionController::TestCase
def test_render_file_absolute_path
get :render_file_absolute_path
@ -170,6 +180,20 @@ class ActionPackAssertionsControllerTest < ActionController::TestCase
end
end
def test_with_routing_works_with_api_only_controllers
@controller = ApiOnlyController.new
with_routing do |set|
set.draw do
get "new_route", to: "api_only#nothing"
get "redirect_to_new_route", to: "api_only#redirect_to_new_route"
end
process :redirect_to_new_route
assert_redirected_to "http://test.host/new_route"
end
end
def test_assert_redirect_to_named_route_failure
with_routing do |set|
set.draw do