Expose last controller in rack env["action_controller.instance"]
This commit is contained in:
parent
d1ffc54c06
commit
909443eab6
@ -60,6 +60,7 @@ def status=(status)
|
||||
# :api: private
|
||||
def dispatch(name, env)
|
||||
@_env = env
|
||||
@_env['action_controller.instance'] = self
|
||||
process(name)
|
||||
to_a
|
||||
end
|
||||
|
@ -240,9 +240,9 @@ def process(method, path, parameters = nil, rack_environment = nil)
|
||||
path = location.query ? "#{location.path}?#{location.query}" : location.path
|
||||
end
|
||||
|
||||
[ControllerCapture, ActionController::Testing].each do |mod|
|
||||
unless ActionController::Base < mod
|
||||
ActionController::Base.class_eval { include mod }
|
||||
unless ActionController::Base < ActionController::Testing
|
||||
ActionController::Base.class_eval do
|
||||
include ActionController::Testing
|
||||
end
|
||||
end
|
||||
|
||||
@ -269,16 +269,15 @@ def process(method, path, parameters = nil, rack_environment = nil)
|
||||
end
|
||||
|
||||
session = Rack::Test::Session.new(@mock_session)
|
||||
|
||||
@controller = ActionController::Base.capture_instantiation do
|
||||
session.request(path, env)
|
||||
end
|
||||
session.request(path, env)
|
||||
|
||||
@request_count += 1
|
||||
@request = ActionDispatch::Request.new(session.last_request.env)
|
||||
@response = ActionDispatch::TestResponse.from_response(@mock_session.last_response)
|
||||
@html_document = nil
|
||||
|
||||
@controller = session.last_request.env['action_controller.instance']
|
||||
|
||||
return response.status
|
||||
end
|
||||
|
||||
@ -296,31 +295,6 @@ def generic_url_rewriter
|
||||
end
|
||||
end
|
||||
|
||||
# A module used to extend ActionController::Base, so that integration tests
|
||||
# can capture the controller used to satisfy a request.
|
||||
module ControllerCapture #:nodoc:
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
alias_method_chain :initialize, :capture
|
||||
end
|
||||
|
||||
def initialize_with_capture(*args)
|
||||
initialize_without_capture
|
||||
self.class.last_instantiation ||= self
|
||||
end
|
||||
|
||||
module ClassMethods #:nodoc:
|
||||
mattr_accessor :last_instantiation
|
||||
|
||||
def capture_instantiation
|
||||
self.last_instantiation = nil
|
||||
yield
|
||||
return last_instantiation
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module Runner
|
||||
def app
|
||||
@app
|
||||
|
Loading…
Reference in New Issue
Block a user