mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 06:41:25 +08:00
Added ability to create topic sorts in plugins with custom_fields
This commit is contained in:
@ -232,6 +232,33 @@ 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
|
||||
archived_topic.custom_fields["sheep"] = 69
|
||||
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
|
||||
invisible_topic.save
|
||||
closed_topic.save
|
||||
future_topic.save
|
||||
|
||||
# adds the custom field as a viable sort option
|
||||
class ::TopicQuery
|
||||
SORTABLE_MAPPING["sheep"] = "custom_fields.sheep"
|
||||
end
|
||||
# returns the topics in the sheep order if requested" do
|
||||
expect(ids_in_order('sheep')).to eq([archived_topic, future_topic, pinned_topic, closed_topic, regular_topic, invisible_topic].map(&:id))
|
||||
|
||||
# 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
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user