From ea40d1c02e61ff90bba1e8a8218f50eed111282b Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Thu, 19 Mar 2020 20:25:33 -0700 Subject: [PATCH] Improved reindex tests --- test/callbacks_test.rb | 59 ----------------------------------------------------------- test/reindex_test.rb | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 85 insertions(+), 71 deletions(-) delete mode 100644 test/callbacks_test.rb diff --git a/test/callbacks_test.rb b/test/callbacks_test.rb deleted file mode 100644 index c6b2e1b..0000000 --- a/test/callbacks_test.rb +++ /dev/null @@ -1,59 +0,0 @@ -require_relative "test_helper" - -class CallbacksTest < Minitest::Test - def test_true_create - Searchkick.callbacks(true) do - store_names ["Product A", "Product B"] - end - Product.searchkick_index.refresh - assert_search "product", ["Product A", "Product B"] - end - - def test_false_create - Searchkick.callbacks(false) do - store_names ["Product A", "Product B"] - end - Product.searchkick_index.refresh - assert_search "product", [] - end - - def test_bulk_create - Searchkick.callbacks(:bulk) do - store_names ["Product A", "Product B"] - end - Product.searchkick_index.refresh - assert_search "product", ["Product A", "Product B"] - end - - def test_queue - skip unless defined?(ActiveJob) && defined?(Redis) - - reindex_queue = Product.searchkick_index.reindex_queue - reindex_queue.clear - - Searchkick.callbacks(:queue) do - store_names ["Product A", "Product B"] - end - Product.searchkick_index.refresh - assert_search "product", [], load: false, conversions: false - assert_equal 2, reindex_queue.length - - Searchkick::ProcessQueueJob.perform_later(class_name: "Product") - Product.searchkick_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.searchkick_index.refresh - assert_search "product", ["Product A", "Product B"], load: false - assert_equal 2, reindex_queue.length - - Searchkick::ProcessQueueJob.perform_later(class_name: "Product") - Product.searchkick_index.refresh - assert_search "product", ["Product A", "Product C"], load: false - assert_equal 0, reindex_queue.length - end -end diff --git a/test/reindex_test.rb b/test/reindex_test.rb index 93d4f83..28c4c52 100644 --- a/test/reindex_test.rb +++ b/test/reindex_test.rb @@ -1,12 +1,60 @@ require_relative "test_helper" class ReindexTest < Minitest::Test - def setup - super - Sku.destroy_all + def test_record_inline + Searchkick.callbacks(false) do + store_names ["Product A", "Product B"] + end + assert_search "product", [] + product = Product.find_by(name: "Product A") + product.reindex(refresh: true) + assert_search "product", ["Product A"] end - def test_scoped + def test_record_async + Searchkick.callbacks(false) do + store_names ["Product A", "Product B"] + end + assert_search "product", [] + product = Product.find_by(name: "Product A") + product.reindex(mode: :async) + Product.search_index.refresh + assert_search "product", ["Product A"] + end + + def test_record_queue + skip unless defined?(ActiveJob) && defined?(Redis) + + reindex_queue = Product.searchkick_index.reindex_queue + reindex_queue.clear + + Searchkick.callbacks(:queue) do + store_names ["Product A", "Product B"] + end + Product.searchkick_index.refresh + assert_search "product", [], load: false, conversions: false + assert_equal 2, reindex_queue.length + + Searchkick::ProcessQueueJob.perform_later(class_name: "Product") + Product.searchkick_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.searchkick_index.refresh + assert_search "product", ["Product A", "Product B"], load: false + assert_equal 2, reindex_queue.length + + Searchkick::ProcessQueueJob.perform_later(class_name: "Product") + Product.searchkick_index.refresh + assert_search "product", ["Product A", "Product C"], load: false + assert_equal 0, reindex_queue.length + end + + def test_relation_inline skip if nobrainer? || cequel? store_names ["Product A"] @@ -17,7 +65,7 @@ class ReindexTest < Minitest::Test assert_search "product", ["Product A", "Product B"] end - def test_associations + def test_relation_associations skip if nobrainer? || cequel? store_names ["Product A"] @@ -27,7 +75,15 @@ class ReindexTest < Minitest::Test assert_search "product", ["Product A", "Product B"] end - def test_async + def test_relation_async + skip "Not available yet" + end + + def test_relation_queue + skip "Not available yet" + end + + def test_full_async skip unless defined?(ActiveJob) Searchkick.callbacks(false) do @@ -48,7 +104,7 @@ class ReindexTest < Minitest::Test assert_search "product", ["Product A"] end - def test_async_wait + def test_full_async_wait skip unless defined?(ActiveJob) && defined?(Redis) Searchkick.callbacks(false) do @@ -62,7 +118,7 @@ class ReindexTest < Minitest::Test assert_search "product", ["Product A"] end - def test_async_non_integer_pk + def test_full_async_non_integer_pk skip unless defined?(ActiveJob) Sku.create(id: SecureRandom.hex, name: "Test") @@ -72,9 +128,11 @@ class ReindexTest < Minitest::Test index = Searchkick::Index.new(reindex[:index_name]) index.refresh assert_equal 1, index.total_docs + ensure + Sku.destroy_all end - def test_refresh_interval + def test_full_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 @@ -85,17 +143,32 @@ class ReindexTest < Minitest::Test assert_equal "1s", Product.search_index.refresh_interval end - def test_resume + def test_full_resume assert Product.reindex(resume: true) end - def test_refresh_full_reindex + def test_full_refresh Product.reindex(refresh: true) end - def test_partial_async + def test_full_partial_async store_names ["Product A"] # warn for now Product.reindex(:search_name, async: true) end + + def test_callbacks_false + Searchkick.callbacks(false) do + store_names ["Product A", "Product B"] + end + assert_search "product", [] + end + + def test_callbacks_bulk + Searchkick.callbacks(:bulk) do + store_names ["Product A", "Product B"] + end + Product.search_index.refresh + assert_search "product", ["Product A", "Product B"] + end end -- libgit2 0.21.0