docbrown/spec/lib/data_update_scripts/resync_elasticsearch_documents_spec.rb
Molly Struve 385e167f74
Clear Elasticsearch Data Instead of Resetting Entire Index for Specs (#7602)
* 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
2020-04-30 11:59:10 -04:00

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