module Scrivito # # @api public # module TestRequest # # Make a test request to act as a CMS request. # This is necessary for testing controllers that include {Scrivito::ControllerActions}, because # these controllers do not have explicit routes by default. # # @api public # @param [Scrivito::BasicObj Obj] test_obj requested +Obj+ # # @example # class MyPageControllerTest < ActionController::TestCase # test 'should respond with success' do # request.for_scrivito_obj # get :index # assert_response :success # end # end # def for_scrivito_obj(test_obj = nil) # prepare the env as if the given obj was loaded by Scrivito::CmsEnv env[Scrivito::CmsEnv::OBJ_ENV_KEY] = test_obj if test_obj class << self def assign_parameters(routes, controller_path, action, parameters = {}) super(routes, controller_path, action, parameters) rescue ActionController::RoutingError, AbstractController::ActionNotFound => e begin super(routes, "scrivito/cms_dispatch", action, parameters) rescue ActionController::RoutingError, AbstractController::ActionNotFound raise e end end end end end end