reindex_test.rb
2.31 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
require_relative "test_helper"
class ReindexTest < Minitest::Test
def setup
super
Sku.destroy_all
end
def test_scoped
skip if nobrainer? || cequel?
store_names ["Product A"]
Searchkick.callbacks(false) do
store_names ["Product B", "Product C"]
end
Product.where(name: "Product B").reindex(refresh: true)
assert_search "product", ["Product A", "Product B"]
end
def test_associations
skip if nobrainer? || cequel?
store_names ["Product A"]
store = Store.create!(name: "Test")
Product.create!(name: "Product B", store_id: store.id)
store.products.reindex(refresh: true)
assert_search "product", ["Product A", "Product B"]
end
def test_async
skip unless defined?(ActiveJob)
Searchkick.callbacks(false) do
store_names ["Product A"]
end
reindex = Product.reindex(async: true)
assert_search "product", [], conversions: false
index = Searchkick::Index.new(reindex[:index_name])
index.refresh
assert_equal 1, index.total_docs
if defined?(Redis)
assert Searchkick.reindex_status(reindex[:name])
end
Product.searchkick_index.promote(reindex[:index_name])
assert_search "product", ["Product A"]
end
def test_async_wait
skip unless defined?(ActiveJob) && defined?(Redis)
Searchkick.callbacks(false) do
store_names ["Product A"]
end
capture_io do
Product.reindex(async: {wait: true})
end
assert_search "product", ["Product A"]
end
def test_async_non_integer_pk
skip unless defined?(ActiveJob)
Sku.create(id: SecureRandom.hex, name: "Test")
reindex = Sku.reindex(async: true)
assert_search "sku", [], conversions: false
index = Searchkick::Index.new(reindex[:index_name])
index.refresh
assert_equal 1, index.total_docs
end
def test_refresh_interval
reindex = Product.reindex(refresh_interval: "30s", async: true, import: false)
index = Searchkick::Index.new(reindex[:index_name])
assert_nil Product.search_index.refresh_interval
assert_equal "30s", index.refresh_interval
Product.search_index.promote(index.name, update_refresh_interval: true)
assert_equal "1s", index.refresh_interval
assert_equal "1s", Product.search_index.refresh_interval
end
def test_resume
assert Product.reindex(resume: true)
end
end