mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 18:51:08 +08:00
FIX: Ensure unique fields in TopicList.preloaded_custom_fields
.
This commit is contained in:
@ -4,7 +4,7 @@ class TopicList
|
|||||||
include ActiveModel::Serialization
|
include ActiveModel::Serialization
|
||||||
|
|
||||||
cattr_accessor :preloaded_custom_fields
|
cattr_accessor :preloaded_custom_fields
|
||||||
self.preloaded_custom_fields = []
|
self.preloaded_custom_fields = Set.new
|
||||||
|
|
||||||
attr_accessor :more_topics_url,
|
attr_accessor :more_topics_url,
|
||||||
:prev_topics_url,
|
:prev_topics_url,
|
||||||
@ -20,6 +20,8 @@ class TopicList
|
|||||||
@current_user = current_user
|
@current_user = current_user
|
||||||
@topics_input = topics
|
@topics_input = topics
|
||||||
@opts = opts || {}
|
@opts = opts || {}
|
||||||
|
|
||||||
|
preloaded_custom_fields << DiscourseTagging::TAGS_FIELD_NAME if SiteSetting.tagging_enabled
|
||||||
end
|
end
|
||||||
|
|
||||||
def preload_key
|
def preload_key
|
||||||
@ -81,11 +83,8 @@ class TopicList
|
|||||||
ft.topic_list = self
|
ft.topic_list = self
|
||||||
end
|
end
|
||||||
|
|
||||||
preload_custom_fields = TopicList.preloaded_custom_fields
|
if preloaded_custom_fields.present?
|
||||||
preload_custom_fields << DiscourseTagging::TAGS_FIELD_NAME if SiteSetting.tagging_enabled
|
Topic.preload_custom_fields(@topics, preloaded_custom_fields)
|
||||||
|
|
||||||
if preload_custom_fields.present?
|
|
||||||
Topic.preload_custom_fields(@topics, preload_custom_fields)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@topics
|
@topics
|
||||||
|
35
spec/models/topic_list_spec.rb
Normal file
35
spec/models/topic_list_spec.rb
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe TopicList do
|
||||||
|
let!(:topic) { Fabricate(:topic) }
|
||||||
|
let(:user) { topic.user }
|
||||||
|
let(:topic_list) { TopicList.new("liked", user, [topic]) }
|
||||||
|
|
||||||
|
after do
|
||||||
|
TopicList.preloaded_custom_fields.clear
|
||||||
|
end
|
||||||
|
|
||||||
|
describe ".preloaded_custom_fields" do
|
||||||
|
it "should return a unique set of values" do
|
||||||
|
TopicList.preloaded_custom_fields << "test"
|
||||||
|
TopicList.preloaded_custom_fields << "test"
|
||||||
|
TopicList.preloaded_custom_fields << "apple"
|
||||||
|
|
||||||
|
expect(TopicList.preloaded_custom_fields).to eq(Set.new(%w{test apple}))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "DiscourseTagging enabled" do
|
||||||
|
before do
|
||||||
|
SiteSetting.tagging_enabled = true
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
SiteSetting.tagging_enabled = false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should add tags to preloaded custom fields" do
|
||||||
|
expect(topic_list.preloaded_custom_fields).to eq(Set.new([DiscourseTagging::TAGS_FIELD_NAME]))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user