FIX: Ensure unique fields in TopicList.preloaded_custom_fields.

This commit is contained in:
Guo Xiang Tan
2016-05-16 17:31:39 +08:00
parent 3214e88ce6
commit 96f07053b2
3 changed files with 43 additions and 9 deletions

View File

@@ -232,7 +232,7 @@ describe TopicQuery do
# returns the topics in reverse posters order if requested" do
expect(ids_in_order('posters', false)).to eq([archived_topic, closed_topic, invisible_topic, future_topic, regular_topic, pinned_topic].map(&:id))
# sets a custom field for each topic to emulate a plugin
regular_topic.custom_fields["sheep"] = 26
pinned_topic.custom_fields["sheep"] = 47
@@ -240,7 +240,7 @@ describe TopicQuery do
invisible_topic.custom_fields["sheep"] = 12
closed_topic.custom_fields["sheep"] = 31
future_topic.custom_fields["sheep"] = 53
regular_topic.save
pinned_topic.save
archived_topic.save
@@ -257,7 +257,7 @@ describe TopicQuery do
# returns the topics in reverse sheep order if requested" do
expect(ids_in_order('sheep', false)).to eq([invisible_topic, regular_topic, closed_topic, pinned_topic, future_topic, archived_topic].map(&:id))
end

View 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