Class: SearchIndexReceiver

Inherits:
Object
  • Object
show all
Defined in:
lib/chewy/minitest/search_index_receiver.rb

Overview

Note:

Intended to be used in conjunction with a test helper which mocks over the #bulk method on a Chewy::Index class. (See Chewy::Minitest::Helpers)

Test helper class to provide minitest hooks for Chewy::Index testing.

The class will capture the data from the *param on the Chewy::Index.bulk method and aggregate the data for test analysis.

Instance Method Summary collapse

Constructor Details

#initializeSearchIndexReceiver

Returns a new instance of SearchIndexReceiver.



9
10
11
# File 'lib/chewy/minitest/search_index_receiver.rb', line 9

def initialize
  @mutations = {}
end

Instance Method Details

#catch(bulk_params, index) ⇒ Object

Parameters:

  • bulk_params (Hash)

    the bulk_params that should be sent to the Chewy::Index.bulk method.

  • index (Chewy::Index)

    the index executing this query.



15
16
17
18
19
20
21
22
23
# File 'lib/chewy/minitest/search_index_receiver.rb', line 15

def catch(bulk_params, index)
  Array.wrap(bulk_params).map { |y| y[:body] }.flatten.each do |update|
    if update[:delete]
      mutation_for(index).deletes << update[:delete][:_id]
    elsif update[:index]
      mutation_for(index).indexes << update[:index]
    end
  end
end

#deleted?(obj, index) ⇒ true, false

Check to see if a given object has been deleted.

Parameters:

  • obj (#id)

    obj the object to look for.

  • index (Chewy::Index)

    what index the object should have been deleted from.

Returns:

  • (true, false)

    if the object was deleted.



59
60
61
# File 'lib/chewy/minitest/search_index_receiver.rb', line 59

def deleted?(obj, index)
  deletes_for(index).include? obj.id
end

#deletes_for(index = nil) ⇒ Hash Also known as: deletes

Returns the index deletes captured by the mock.

Parameters:

Returns:

  • (Hash)

    the index deletes captured by the mock.



38
39
40
41
42
43
44
# File 'lib/chewy/minitest/search_index_receiver.rb', line 38

def deletes_for(index = nil)
  if index
    mutation_for(index).deletes
  else
    @mutations.transform_values(&:deletes)
  end
end

#indexed?(obj, index) ⇒ true, false

Check to see if a given object has been indexed.

Parameters:

  • obj (#id)

    obj the object to look for.

  • index (Chewy::Index)

    what index the object should be indexed in.

Returns:

  • (true, false)

    if the object was indexed.



51
52
53
# File 'lib/chewy/minitest/search_index_receiver.rb', line 51

def indexed?(obj, index)
  indexes_for(index).map { |i| i[:_id] }.include? obj.id
end

#indexes_for(index = nil) ⇒ Hash Also known as: indexes

Returns the index changes captured by the mock.

Parameters:

Returns:

  • (Hash)

    the index changes captured by the mock.



27
28
29
30
31
32
33
# File 'lib/chewy/minitest/search_index_receiver.rb', line 27

def indexes_for(index = nil)
  if index
    mutation_for(index).indexes
  else
    @mutations.transform_values(&:indexes)
  end
end

#updated_indexesArray<Chewy::Index>

Returns a list of indexes changed.

Returns:



64
65
66
# File 'lib/chewy/minitest/search_index_receiver.rb', line 64

def updated_indexes
  @mutations.keys
end