DEV: Use core method to preload category custom fields for site serializer

This commit is contained in:
Vinoth Kannan 2019-03-16 23:27:31 +05:30
parent 8beaa6c1d9
commit 8b8512e73e
2 changed files with 1 additions and 46 deletions

View File

@ -324,31 +324,6 @@ SQL
end
end
require_dependency 'basic_category_serializer'
class ::BasicCategorySerializer
attributes :custom_fields
def custom_fields
object.custom_fields
end
def include_custom_fields?
object.custom_field_preloaded?("enable_accepted_answers") && SiteSetting.show_filter_by_solved_status && custom_fields.present?
end
end
require_dependency 'site'
class ::Site
alias_method :discourse_categories, :categories
def categories
@categories ||= begin
Category.preload_custom_fields(discourse_categories, ["enable_accepted_answers"]) if SiteSetting.show_filter_by_solved_status
discourse_categories
end
end
end
require_dependency 'topic_view_serializer'
class ::TopicViewSerializer
attributes :accepted_answer
@ -529,6 +504,7 @@ SQL
end
TopicList.preloaded_custom_fields << "accepted_answer_post_id" if TopicList.respond_to? :preloaded_custom_fields
Site.preloaded_category_custom_fields << "enable_accepted_answers" if Site.respond_to? :preloaded_category_custom_fields
if CategoryList.respond_to?(:preloaded_topic_custom_fields)
CategoryList.preloaded_topic_custom_fields << "accepted_answer_post_id"

View File

@ -1,21 +0,0 @@
require 'rails_helper'
describe BasicCategorySerializer do
let(:category) { Fabricate(:category) }
let(:guardian) { Guardian.new }
before do
SiteSetting.show_filter_by_solved_status = true
category.custom_fields["enable_accepted_answers"] = true
category.save_custom_fields
end
it "should include custom fields only if its preloaded" do
json = described_class.new(category, scope: guardian, root: false).as_json
expect(json.to_s).not_to include("custom_fields")
category.expects(:custom_field_preloaded?).returns(true)
json = described_class.new(category, scope: guardian, root: false).as_json
expect(json.to_s).to include("custom_fields")
end
end