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.

Defined Under Namespace

Classes: MUTATION_FOR_CLASS

Instance Method Summary collapse

Constructor Details

#initializeSearchIndexReceiver

Returns a new instance of SearchIndexReceiver.



11
12
13
# File 'lib/chewy/minitest/search_index_receiver.rb', line 11

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.



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

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.



61
62
63
# File 'lib/chewy/minitest/search_index_receiver.rb', line 61

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.



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

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.



53
54
55
# File 'lib/chewy/minitest/search_index_receiver.rb', line 53

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.



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

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:



66
67
68
# File 'lib/chewy/minitest/search_index_receiver.rb', line 66

def updated_indexes
  @mutations.keys
end