Sha256: acd0c9426b91b3e3a1bb608cb632bceee236e0c7d42b3a683bd5667d65d1a7c6

Contents?: true

Size: 1.82 KB

Versions: 15

Compression:

Stored size: 1.82 KB

Contents

module Mock
  class ConnectionFactory
    def new(adapter = nil, opts = nil)
      if @instance
        raise('Factory can only create an instance once!')
      else
        @instance = Connection.new(adapter, opts)
      end
    end

    def instance
      @instance ||= Connection.new
    end
  end

  class Connection
    attr_reader :adds, :commits, :searches
    attr_accessor :adapter, :opts

    def initialize(adapter = nil, opts = nil)
      @adapter, @opts = adapter, opts
      @adds, @deletes, @deletes_by_query, @commits, @searches = Array.new(5) { [] }
    end

    def add(documents)
      @adds << Array(documents)
    end

    def delete_by_id(*ids)
      @deletes << ids
    end

    def delete_by_query(query)
      @deletes_by_query << query
    end

    def commit
      @commits << Time.now
    end

    def select(params)
      @searches << @last_search = params
    end

    def has_add_with?(*documents)
      @adds.any? do |add|
        documents.all? do |document|
          add.any? do |added|
            if document.is_a?(Hash)
              document.all? do |field, value|
                added.fields_by_name(field).map do |field|
                  field.value
                end == Array(value)
              end
            else
              !added.fields_by_name(document).empty?
            end
          end
        end
      end
    end

    def has_delete?(*ids)
      @deletes.any? do |delete|
        delete & ids == ids
      end
    end

    def has_delete_by_query?(query)
      @deletes_by_query.include?(query)
    end

    def has_last_search_with?(params)
      return unless @last_search
      if params.respond_to?(:all?)
        params.all? do |key, value|
          @last_search.has_key?(key) && @last_search[key] == value
        end
      else
        @last_search.has_key?(params)
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 7 rubygems

Version Path
Chrononaut-sunspot-client-0.9.4 spec/mocks/connection.rb
UnderpantsGnome-sunspot-0.9.1.1 spec/mocks/connection.rb
benjaminkrause-sunspot-0.9.7 spec/mocks/connection.rb
kristopher-sunspot-0.9.8 spec/mocks/connection.rb
kuahyeow-sunspot-0.9.7 spec/mocks/connection.rb
kuahyeow-sunspot-0.9.8 spec/mocks/connection.rb
outoftime-sunspot-0.9.0 spec/mocks/connection.rb
outoftime-sunspot-0.9.1 spec/mocks/connection.rb
outoftime-sunspot-0.9.2 spec/mocks/connection.rb
outoftime-sunspot-0.9.3 spec/mocks/connection.rb
outoftime-sunspot-0.9.4 spec/mocks/connection.rb
outoftime-sunspot-0.9.5 spec/mocks/connection.rb
outoftime-sunspot-0.9.6 spec/mocks/connection.rb
outoftime-sunspot-0.9.7 spec/mocks/connection.rb
sunspot-0.9.7 spec/mocks/connection.rb