Shim rails5 http test methods

This commit is contained in:
Benjamin Fleischer 2017-09-19 08:43:03 -05:00
parent 322c8aa59c
commit ffe658f027
2 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,53 @@
module Rails5Shims
module ControllerTests
# https://github.com/rails/rails/blob/b217354/actionpack/lib/action_controller/test_case.rb
REQUEST_KWARGS = [:params, :headers, :session, :flash, :method, :body, :xhr].freeze
def get(path, *args)
fold_kwargs!(args)
super
end
def post(path, *args)
fold_kwargs!(args)
super
end
def patch(path, *args)
fold_kwargs!(args)
super
end
def put(path, *args)
fold_kwargs!(args)
super
end
# Fold kwargs from test request into args
# Band-aid for DEPRECATION WARNING
def fold_kwargs!(args)
hash = args && args[0]
return unless hash.respond_to?(:key)
Rails5Shims::ControllerTests::REQUEST_KWARGS.each do |kwarg|
next unless hash.key?(kwarg)
value = hash.delete(kwarg)
if value.is_a? String
args.insert(0, value)
else
hash.merge! value
end
end
end
# Uncomment for debugging where the kwargs warnings come from
# def non_kwarg_request_warning
# super.tap do
# STDOUT.puts caller[2..3]
# end
# end
end
end
if Rails::VERSION::MAJOR < 5
ActionController::TestCase.send :include, Rails5Shims::ControllerTests
ActionDispatch::IntegrationTest.send :include, Rails5Shims::ControllerTests
end

View File

@ -53,3 +53,5 @@ end
class Object
undef_method :id if respond_to?(:id)
end
require "support/rails5_shims"