Sha256: 30e7b5d008f9c168630feeb5717245e342e4d6be1362ddfb53c2fe52566251ff

Contents?: true

Size: 1.67 KB

Versions: 75

Compression:

Stored size: 1.67 KB

Contents

module Scrivito
  #
  # @api public
  #
  module TestRequest
    ROUTING_ERRORS = [
      AbstractController::ActionNotFound,
      ActionController::RoutingError,
      ActionController::UrlGenerationError,
    ]

    #
    # 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)
      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 *ROUTING_ERRORS => e
          begin
            super routes, 'scrivito/cms_dispatch', action, parameters
          rescue *ROUTING_ERRORS
            raise e
          end
        end
      end
    end

    def for_cms_object(*args)
      raise "The method `for_cms_object' was removed. Please use `for_scrivito_obj' instead"
    end

    #
    # Make a test request to act as it's by a specific Scrivito user
    #
    # @api public
    # @param [Scrivito::User] test_user requested +User+
    #
    def for_scrivito_user(test_user)
      env[EditingContextMiddleware::ENVKEY] = EditingContext.new(editor: -> { test_user })
    end
  end
end

Version data entries

75 entries across 75 versions & 1 rubygems

Version Path
scrivito_sdk-1.5.5 lib/scrivito/test_request.rb
scrivito_sdk-1.6.1 lib/scrivito/test_request.rb
scrivito_sdk-1.6.1.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.5.5.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.4.3 lib/scrivito/test_request.rb
scrivito_sdk-1.5.4 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0.rc5 lib/scrivito/test_request.rb
scrivito_sdk-1.5.4.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0.rc4 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0.rc3 lib/scrivito/test_request.rb
scrivito_sdk-1.5.3 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0.rc2 lib/scrivito/test_request.rb
scrivito_sdk-1.5.3.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.6.0.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.5.2 lib/scrivito/test_request.rb
scrivito_sdk-1.5.2.rc1 lib/scrivito/test_request.rb
scrivito_sdk-1.5.1 lib/scrivito/test_request.rb
scrivito_sdk-1.5.1.rc2 lib/scrivito/test_request.rb
scrivito_sdk-1.5.1.rc1 lib/scrivito/test_request.rb