* Clear Elasticsearch Data Instead of Resetting Entire Index for Specs * only reset for specs that are messing with index creation and deletion, recreate indexes before and after those * add back elasticsearch meta info to specs and update data update specs * update serializer specs * update search and rest of specs with new meta data tag
56 lines
2.2 KiB
Ruby
56 lines
2.2 KiB
Ruby
require "rails_helper"
|
|
require Rails.root.join("lib/data_update_scripts/20200410152018_resync_elasticsearch_documents.rb")
|
|
|
|
describe DataUpdateScripts::ResyncElasticsearchDocuments, elasticsearch: %w[FeedContent User Tag] do
|
|
after do
|
|
Article::SEARCH_CLASS.refresh_index
|
|
User::SEARCH_CLASS.refresh_index
|
|
end
|
|
|
|
it "indexes podcast episodes and tags to Elasticsearch" do
|
|
tag = create(:tag)
|
|
podcast_episode = create(:podcast_episode)
|
|
Sidekiq::Worker.clear_all
|
|
|
|
expect { tag.elasticsearch_doc }.to raise_error(Search::Errors::Transport::NotFound)
|
|
expect { podcast_episode.elasticsearch_doc }.to raise_error(Search::Errors::Transport::NotFound)
|
|
|
|
sidekiq_perform_enqueued_jobs { described_class.new.run }
|
|
expect(tag.elasticsearch_doc).not_to be_nil
|
|
expect(podcast_episode.elasticsearch_doc).not_to be_nil
|
|
end
|
|
|
|
it "syncs articles, comments, and users to Elasticsearch", :aggregate_failures do
|
|
article = create(:article)
|
|
comment = create(:comment)
|
|
user = create(:user)
|
|
index_real_and_mock_documents(article, comment, user)
|
|
|
|
expect(Article::SEARCH_CLASS.articles_document_count).not_to eq(Article.count)
|
|
expect(Comment::SEARCH_CLASS.comments_document_count).not_to eq(Comment.count)
|
|
expect(User::SEARCH_CLASS.document_count).not_to eq(User.count)
|
|
|
|
sidekiq_perform_enqueued_jobs { described_class.new.run }
|
|
refresh_indexes
|
|
|
|
expect(article.elasticsearch_doc).not_to be_nil
|
|
expect(user.elasticsearch_doc).not_to be_nil
|
|
expect(comment.elasticsearch_doc).not_to be_nil
|
|
expect(Article::SEARCH_CLASS.articles_document_count).to eq(Article.count)
|
|
expect(Comment::SEARCH_CLASS.comments_document_count).to eq(Comment.count)
|
|
expect(User::SEARCH_CLASS.document_count).to eq(User.count)
|
|
end
|
|
|
|
def index_real_and_mock_documents(article, comment, user)
|
|
sidekiq_perform_enqueued_jobs
|
|
Article::SEARCH_CLASS.index("article_#{article.id + 100}", class_name: "Article")
|
|
Comment::SEARCH_CLASS.index("comment_#{comment.id + 100}", class_name: "Comment")
|
|
User::SEARCH_CLASS.index(user.id + 100, name: "User")
|
|
refresh_indexes
|
|
end
|
|
|
|
def refresh_indexes
|
|
User::SEARCH_CLASS.refresh_index
|
|
Article::SEARCH_CLASS.refresh_index
|
|
end
|
|
end
|