callbacks_test.rb
2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
require_relative "test_helper"
class CallbacksTest < Minitest::Test
def test_false
Searchkick.callbacks(false) do
store_names ["Product A", "Product B"]
end
assert_search "product", []
end
def test_bulk
Searchkick.callbacks(:bulk) do
store_names ["Product A", "Product B"]
end
Product.search_index.refresh
assert_search "product", ["Product A", "Product B"]
end
def test_queue
# TODO figure out which earlier test leaves records in index
Product.reindex
reindex_queue = Product.search_index.reindex_queue
reindex_queue.clear
Searchkick.callbacks(:queue) do
store_names ["Product A", "Product B"]
end
Product.search_index.refresh
assert_search "product", [], load: false, conversions: false
assert_equal 2, reindex_queue.length
perform_enqueued_jobs do
Searchkick::ProcessQueueJob.perform_now(class_name: "Product")
end
Product.search_index.refresh
assert_search "product", ["Product A", "Product B"], load: false
assert_equal 0, reindex_queue.length
Searchkick.callbacks(:queue) do
Product.where(name: "Product B").destroy_all
Product.create!(name: "Product C")
end
Product.search_index.refresh
assert_search "product", ["Product A", "Product B"], load: false
assert_equal 2, reindex_queue.length
perform_enqueued_jobs do
Searchkick::ProcessQueueJob.perform_now(class_name: "Product")
end
Product.search_index.refresh
assert_search "product", ["Product A", "Product C"], load: false
assert_equal 0, reindex_queue.length
# ensure no error with empty queue
Searchkick::ProcessQueueJob.perform_now(class_name: "Product")
end
def test_disable_callbacks
# make sure callbacks default to on
assert Searchkick.callbacks?
store_names ["product a"]
Searchkick.disable_callbacks
assert !Searchkick.callbacks?
store_names ["product b"]
assert_search "product", ["product a"]
Searchkick.enable_callbacks
Product.reindex
assert_search "product", ["product a", "product b"]
end
end