Sha256: 937262c3f0e0b23b4e3b324959b17a313582d13499797365f51d36705f8a0075

Contents?: true

Size: 1.6 KB

Versions: 23

Compression:

Stored size: 1.6 KB

Contents

module Clearance
  module Testing
    # Provides helpers to your controller specs.
    # These are typically used in tests by requiring `clearance/rspec` or
    # `clearance/test_unit` as appropriate in your `rails_helper.rb` or
    # `test_helper.rb` files.
    module ControllerHelpers
      # @api private
      def setup_controller_request_and_response
        super
        @request.env[:clearance] = Clearance::Session.new(@request.env)
      end

      # Signs in a user that is created using FactoryGirl.
      # The factory name is derrived from your `user_class` Clearance
      # configuration.
      #
      # @raise [RuntimeError] if FactoryGirl is not defined.
      def sign_in
        constructor = factory_module("sign_in")

        factory = Clearance.configuration.user_model.to_s.underscore.to_sym
        sign_in_as constructor.create(factory)
      end

      # Signs in the provided user.
      #
      # @return user
      def sign_in_as(user)
        @request.env[:clearance].sign_in(user)
        user
      end

      # Signs out a user that may be signed in.
      #
      # @return [void]
      def sign_out
        @request.env[:clearance].sign_out
      end

      # Determines the appropriate factory library
      #
      # @api private
      # @raise [RuntimeError] if both FactoryGirl and FactoryBot are not
      #   defined.
      def factory_module(provider)
        if defined?(FactoryBot)
          FactoryBot
        elsif defined?(FactoryGirl)
          FactoryGirl
        else
          raise("Clearance's `#{provider}` helper requires factory_bot")
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
clearance-2.9.3 lib/clearance/testing/controller_helpers.rb
clearance-2.9.2 lib/clearance/testing/controller_helpers.rb
clearance-2.9.1 lib/clearance/testing/controller_helpers.rb
clearance-2.9.0 lib/clearance/testing/controller_helpers.rb
clearance-2.8.0 lib/clearance/testing/controller_helpers.rb
clearance-2.7.2 lib/clearance/testing/controller_helpers.rb
clearance-2.7.0 lib/clearance/testing/controller_helpers.rb
clearance-2.6.2 lib/clearance/testing/controller_helpers.rb
clearance-2.6.1 lib/clearance/testing/controller_helpers.rb
clearance-2.6.0 lib/clearance/testing/controller_helpers.rb
clearance-2.5.0 lib/clearance/testing/controller_helpers.rb
clearance-2.4.0 lib/clearance/testing/controller_helpers.rb
clearance-2.3.1 lib/clearance/testing/controller_helpers.rb
clearance-2.3.0 lib/clearance/testing/controller_helpers.rb
clearance-2.2.1 lib/clearance/testing/controller_helpers.rb
clearance-2.2.0 lib/clearance/testing/controller_helpers.rb
clearance-2.1.0 lib/clearance/testing/controller_helpers.rb
clearance-2.0.0 lib/clearance/testing/controller_helpers.rb
clearance-2.0.0.beta2 lib/clearance/testing/controller_helpers.rb
clearance-2.0.0.beta1 lib/clearance/testing/controller_helpers.rb