mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 02:50:00 +08:00
PERF: Reduce size of search payload by removing unused topic attributes.
This commit is contained in:
parent
88a43ef800
commit
84de643c04
|
@ -5,11 +5,20 @@ class SearchTopicListItemSerializer < ListableTopicSerializer
|
|||
|
||||
attributes :category_id
|
||||
|
||||
def include_image_url?
|
||||
false
|
||||
end
|
||||
|
||||
def include_thumbnails?
|
||||
false
|
||||
%i{
|
||||
image_url
|
||||
thumbnails
|
||||
title
|
||||
created_at
|
||||
last_posted_at
|
||||
bumped_at
|
||||
bumped
|
||||
highest_post_number
|
||||
reply_count
|
||||
unseen
|
||||
}.each do |attr|
|
||||
define_method("include_#{attr}?") do
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
42
spec/serializers/search_topic_list_item_serializer_spec.rb
Normal file
42
spec/serializers/search_topic_list_item_serializer_spec.rb
Normal file
|
@ -0,0 +1,42 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SearchTopicListItemSerializer do
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
fab!(:post) { Fabricate(:post) }
|
||||
let(:topic) { post.topic }
|
||||
|
||||
let(:serializer) do
|
||||
SearchTopicListItemSerializer.new(topic, scope: Guardian.new(admin), root: false)
|
||||
end
|
||||
|
||||
it 'should only include the required keys' do
|
||||
current_keys = serializer.as_json.keys
|
||||
|
||||
expected_keys = [
|
||||
:id,
|
||||
:fancy_title,
|
||||
:slug,
|
||||
:posts_count,
|
||||
:archetype,
|
||||
:pinned,
|
||||
:unpinned,
|
||||
:visible,
|
||||
:closed,
|
||||
:archived,
|
||||
:bookmarked,
|
||||
:liked,
|
||||
:category_id
|
||||
]
|
||||
|
||||
extra_keys = current_keys - expected_keys
|
||||
missing_keys = expected_keys - current_keys
|
||||
|
||||
expect(extra_keys).to eq([]), lambda {
|
||||
"Please verify if the following keys are required as part of the serializer's payload: #{extra_keys.join(", ")}"
|
||||
}
|
||||
|
||||
expect(missing_keys).to eq([])
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user