diff --git a/app/services/search/postgres/tag.rb b/app/services/search/postgres/tag.rb index 620ad178c..ffbcf0f2f 100644 --- a/app/services/search/postgres/tag.rb +++ b/app/services/search/postgres/tag.rb @@ -4,13 +4,14 @@ module Search ATTRIBUTES = %i[id name hotness_score rules_html supported short_summary].freeze def self.search_documents(term) - ::Tag - .search_by_name(term) - .where(supported: true) - .reorder(hotness_score: :desc) - .select(*ATTRIBUTES) - .as_json + results = ::Tag.search_by_name(term).where(supported: true).reorder(hotness_score: :desc).select(*ATTRIBUTES) + serialize(results) end + + def self.serialize(results) + Search::TagSerializer.new(results, is_collection: true).serializable_hash[:data].pluck(:attributes) + end + private_class_method :serialize end end end diff --git a/spec/services/search/postgres/tag_spec.rb b/spec/services/search/postgres/tag_spec.rb index 3a0d9ff9b..65232a55d 100644 --- a/spec/services/search/postgres/tag_spec.rb +++ b/spec/services/search/postgres/tag_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Search::Postgres::Tag, type: :service do result = described_class.search_documents(tag.name) expect(result.first.keys).to match_array( - %w[id name hotness_score rules_html supported short_summary], + %i[id name hotness_score rules_html supported short_summary], ) end @@ -36,7 +36,7 @@ RSpec.describe Search::Postgres::Tag, type: :service do ruby = create(:tag, name: "ruby") result = described_class.search_documents("jav") - tags = result.map { |r| r["name"] } + tags = result.pluck(:name) expect(tags).to include(java.name) expect(tags).to include(javascript.name) @@ -56,7 +56,7 @@ RSpec.describe Search::Postgres::Tag, type: :service do tag2.save! result = described_class.search_documents("jav") - tags = result.map { |r| r["name"] } + tags = result.pluck(:name) expect(tags).to eq([tag2.name, tag1.name]) end