Sha256: 73b6d29af5aa0c18b281c480e74105aa5d11090841fa606cf21dce2bea217a57

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

module ActiveMocker

  class LoadedMocks
    def self.add(mocks_to_add)
      mocks.merge!({mocks_to_add.name => mocks_to_add})
    end

    def self.add_subclass(subclass)
      subclasses.merge!({subclass.mocked_class => subclass})
    end

    def self.subclasses
      @subclasses ||= {}
    end

    def self.clear_subclasses
      @subclasses = nil
    end

    def self.mocks
      @mocks ||= {}
    end

    def self.find(klass)
      class_name_to_mock[klass]
    end

    def self.all
      mocks
    end

    def self.clear_all
      action = -> (mocks){ mocks.each { |n, m| m.clear_mock } }
      action.call(mocks)
      action.call(subclasses)
      clear_subclasses
    end

    def self.delete_all
      action = -> (mocks) { mocks.each { |n, m| m.delete_all } }
      action.call(mocks)
      action.call(subclasses)
    end

    def self.reload_all
      action = -> (mocks) { mocks.each { |n, m| m.send(:reload) } }
      action.call(mocks)
      action.call(subclasses)
    end

    def self.undefine_all
      action = -> (mocks) { mocks.each do |n, m|
        Object.send(:remove_const, n) if Object.const_defined?(n)
      end }
      action.call(mocks)
      action.call(subclasses)
    end

    def self.class_name_to_mock
      hash = {}
      mocks.each do |mock_name, mock_constant|
        hash[mock_constant.mocked_class] = mock_constant
      end
      hash.merge(subclasses)
    end

    private

    def self.internal_clear
      clear_subclasses
      @mocks = nil
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active_mocker-1.4.2 lib/active_mocker/loaded_mocks.rb
active_mocker-1.4.1 lib/active_mocker/loaded_mocks.rb