Sha256: 359167f4976494f873b8b02c54ae36aa8402bdc009eebd9847f92149daf4a6a0

Contents?: true

Size: 1.31 KB

Versions: 15

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true
require "singleton"
require "active_mocker/mock/exceptions"

module ActiveMocker
  class LoadedMocks
    class Features
      include Singleton
      STUB_ACTIVE_RECORD_EXCEPTIONS = {
        "ActiveRecord::RecordNotFound"        => ActiveMocker::RecordNotFound,
        "ActiveRecord::RecordNotUnique"       => ActiveMocker::RecordNotUnique,
        "ActiveRecord::UnknownAttributeError" => ActiveMocker::UnknownAttributeError,
      }
      DEFAULTS                      = {
        timestamps:                    false,
        delete_all_before_example:     false,
        stub_active_record_exceptions: STUB_ACTIVE_RECORD_EXCEPTIONS,
      }.freeze

      def initialize
        reset
      end

      def each(&block)
        @features.each(&block)
      end

      def enable(feature)
        update(feature, true)
      end

      def disable(feature)
        update(feature, false)
      end

      def [](feature)
        @features[feature]
      end

      def reset
        @features = DEFAULTS.dup
      end

      def to_h
        @features
      end

      private

      def update(feature, value)
        if @features.key?(feature)
          @features[feature] = value
        else
          raise KeyError, "#{feature} is not an available feature."
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
active_mocker-2.6.2 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.6.1.beta2 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.6.1.beta lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.6.0 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.4 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.3 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.2 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.1 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.1.pre lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.5.0 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.4.4 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.4.3 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.4.2 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.4.1 lib/active_mocker/loaded_mocks/features.rb
active_mocker-2.4.0 lib/active_mocker/loaded_mocks/features.rb