create searchable specs and remove redundant specs from AR models (#6450) [deploy]

This commit is contained in:
Molly Struve 2020-03-04 15:09:53 -05:00 committed by GitHub
parent b2fc388427
commit 067cab1689
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 100 deletions

View file

@ -12,22 +12,6 @@ RSpec.describe ChatChannelMembership, type: :model do
end
end
describe "#index_to_elasticsearch" do
it "enqueues job to index tag to elasticsearch" do
sidekiq_assert_enqueued_with(job: Search::IndexToElasticsearchWorker, args: [described_class.to_s, chat_channel_membership.id]) do
chat_channel_membership.index_to_elasticsearch
end
end
end
describe "#index_to_elasticsearch_inline" do
it "indexed chat_channel_membership to elasticsearch inline" do
allow(Search::ChatChannelMembership).to receive(:index)
chat_channel_membership.index_to_elasticsearch_inline
expect(Search::ChatChannelMembership).to have_received(:index).with(chat_channel_membership.id, hash_including(:id, :channel_name))
end
end
describe "#after_commit" do
it "on update enqueues job to index chat_channel_membership to elasticsearch" do
chat_channel_membership.save
@ -43,19 +27,4 @@ RSpec.describe ChatChannelMembership, type: :model do
end
end
end
describe "#serialized_search_hash" do
it "creates a valid serialized hash to send to elasticsearch" do
mapping_keys = Search::ChatChannelMembership::MAPPINGS.dig(:properties).keys
expect(chat_channel_membership.serialized_search_hash.symbolize_keys.keys).to eq(mapping_keys)
end
end
describe "#elasticsearch_doc" do
it "finds document in elasticsearch", elasticsearch: true do
allow(Search::ChatChannelMembership).to receive(:find_document)
chat_channel_membership.elasticsearch_doc
expect(Search::ChatChannelMembership).to have_received(:find_document)
end
end
end

View file

@ -72,22 +72,6 @@ RSpec.describe ClassifiedListing, type: :model do
end
end
describe "#index_to_elasticsearch" do
it "enqueues job to index classified_listing to elasticsearch" do
sidekiq_assert_enqueued_with(job: Search::IndexToElasticsearchWorker, args: [described_class.to_s, classified_listing.id]) do
classified_listing.index_to_elasticsearch
end
end
end
describe "#index_to_elasticsearch_inline" do
it "indexed classified_listing to elasticsearch inline" do
allow(Search::ClassifiedListing).to receive(:index)
classified_listing.index_to_elasticsearch_inline
expect(Search::ClassifiedListing).to have_received(:index).with(classified_listing.id, hash_including(:id, :body_markdown))
end
end
describe "#after_commit" do
it "on update enqueues worker to index tag to elasticsearch" do
classified_listing.save
@ -105,25 +89,6 @@ RSpec.describe ClassifiedListing, type: :model do
end
end
describe "#serialized_search_hash" do
it "creates a valid serialized hash to send to elasticsearch" do
# classified_listing_search is a copy_to field and will never be included
# in the searialized_search_hash, so we skip it
mapping_keys = Search::ClassifiedListing::MAPPINGS.dig(:properties).except(:classified_listing_search).keys
search_hash_keys = classified_listing.serialized_search_hash.symbolize_keys.keys
expect(search_hash_keys).to match_array(mapping_keys)
end
end
describe "#elasticsearch_doc" do
it "finds document in elasticsearch", elasticsearch: true do
allow(Search::ClassifiedListing).to receive(:find_document)
classified_listing.elasticsearch_doc
expect(Search::ClassifiedListing).to have_received(:find_document)
end
end
describe ".cost_by_category" do
it "returns the cost per category" do
expected_cost = described_class::CATEGORIES_AVAILABLE.dig("cfp", "cost")

View file

@ -3,6 +3,7 @@ require "rails_helper"
class SearchableModel
include Searchable
SEARCH_CLASS = Search::Tag
SEARCH_SERIALIZER = Search::TagSerializer
def id
1
@ -10,12 +11,53 @@ class SearchableModel
end
RSpec.describe Searchable do
let(:model_class) { SearchableModel }
let(:searchable_model) { model_class.new }
let(:serialized_hash) { { data: { attributes: { id: searchable_model.id } } } }
before do
mock_serializer = instance_double("MockSerializer", :serializable_hash)
allow(model_class::SEARCH_SERIALIZER).to receive(:new).and_return(mock_serializer)
allow(mock_serializer).to receive(:serializable_hash).and_return(
serialized_hash,
)
end
describe "#remove_from_elasticsearch" do
it "enqueues job to delete model document from elasticsearch" do
model = SearchableModel.new
sidekiq_assert_enqueued_with(job: Search::RemoveFromElasticsearchIndexWorker, args: [SearchableModel::SEARCH_CLASS.to_s, model.id]) do
model.remove_from_elasticsearch
sidekiq_assert_enqueued_with(job: Search::RemoveFromElasticsearchIndexWorker, args: [SearchableModel::SEARCH_CLASS.to_s, searchable_model.id]) do
searchable_model.remove_from_elasticsearch
end
end
end
describe "#index_to_elasticsearch" do
it "enqueues job to index document to elasticsearch" do
sidekiq_assert_enqueued_with(job: Search::IndexToElasticsearchWorker, args: ["SearchableModel", searchable_model.id]) do
searchable_model.index_to_elasticsearch
end
end
end
describe "#index_to_elasticsearch_inline" do
it "indexes a document to elasticsearch inline" do
allow(model_class::SEARCH_CLASS).to receive(:index)
searchable_model.index_to_elasticsearch_inline
expect(model_class::SEARCH_CLASS).to have_received(:index).with(searchable_model.id, id: searchable_model.id)
end
end
describe "#serialized_search_hash" do
it "creates a valid serialized hash to send to elasticsearch" do
expect(searchable_model.serialized_search_hash.symbolize_keys.keys).to eq([:id])
end
end
describe "#elasticsearch_doc" do
it "finds document in elasticsearch" do
allow(model_class::SEARCH_CLASS).to receive(:find_document)
searchable_model.elasticsearch_doc
expect(model_class::SEARCH_CLASS).to have_received(:find_document)
end
end
end

View file

@ -76,22 +76,6 @@ RSpec.describe Tag, type: :model do
expect(tag.mod_chat_channel).to eq(channel)
end
describe "#index_to_elasticsearch" do
it "enqueues job to index tag to elasticsearch" do
sidekiq_assert_enqueued_with(job: Search::IndexToElasticsearchWorker, args: [described_class.to_s, tag.id]) do
tag.index_to_elasticsearch
end
end
end
describe "#index_to_elasticsearch_inline" do
it "indexed tag to elasticsearch inline" do
allow(Search::Tag).to receive(:index)
tag.index_to_elasticsearch_inline
expect(Search::Tag).to have_received(:index).with(tag.id, hash_including(:id, :name))
end
end
describe "#after_commit" do
it "on update enqueues job to index tag to elasticsearch" do
tag.save
@ -107,19 +91,4 @@ RSpec.describe Tag, type: :model do
end
end
end
describe "#serialized_search_hash" do
it "creates a valid serialized hash to send to elasticsearch" do
mapping_keys = Search::Tag::MAPPINGS.dig(:properties).keys
expect(tag.serialized_search_hash.symbolize_keys.keys).to eq(mapping_keys)
end
end
describe "#elasticsearch_doc" do
it "finds document in elasticsearch", elasticsearch: true do
allow(Search::Tag).to receive(:find_document)
tag.elasticsearch_doc
expect(Search::Tag).to have_received(:find_document)
end
end
end