discourse/spec/jobs/create_recent_post_search_indexes_spec.rb
Alan Guo Xiang Tan afc1611be7
DEV: Disable SearchIndexer after fabrication (#21378)
SearchIndexer is only automatically disabled in `before_all` and `before` blocks which means at the start
of test runs. Enabling the SearchIndexer in one `fab!` block will affect
all other `fab!` blocks which is not ideal as we may be indexing stuff
for search when we don't need to.
2023-05-04 09:20:52 +08:00

35 lines
1.1 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Jobs::CreateRecentPostSearchIndexes do
subject { described_class.new }
fab!(:post) { with_search_indexer_enabled { Fabricate(:post) } }
fab!(:post_2) { with_search_indexer_enabled { Fabricate(:post) } }
before { SearchIndexer.enable }
describe "#execute" do
it "should not create the index if requried posts size has not been reached" do
SiteSetting.search_recent_posts_size = 1
SiteSetting.search_enable_recent_regular_posts_offset_size = 3
expect do subject.execute({}) end.to_not change {
SiteSetting.search_recent_regular_posts_offset_post_id
}
end
it "should create the right index" do
SiteSetting.search_recent_posts_size = 1
SiteSetting.search_enable_recent_regular_posts_offset_size = 1
subject.execute({})
expect(SiteSetting.search_recent_regular_posts_offset_post_id).to eq(post_2.id)
expect(DB.query_single(<<~SQL).first).to eq(1)
SELECT 1 FROM pg_indexes WHERE indexname = '#{described_class::REGULAR_POST_SEARCH_DATA_INDEX_NAME}'
SQL
end
end
end