diff --git a/app/controllers/discourse_preset_topic_composer/preset_tag_groups_controller.rb b/app/controllers/discourse_preset_topic_composer/preset_tag_groups_controller.rb index c1523ca..e7563d7 100644 --- a/app/controllers/discourse_preset_topic_composer/preset_tag_groups_controller.rb +++ b/app/controllers/discourse_preset_topic_composer/preset_tag_groups_controller.rb @@ -7,8 +7,18 @@ class PresetTagGroupsController < ::ApplicationController def search_tags_by_tag_group tag_group = params[:tag_group] tag_group = CGI.unescape(tag_group) - tags = TagGroup.visible(guardian).find_by(name: tag_group)&.tags || [] - render json: { tags: tags } + + tag_order = + if SiteSetting.tags_sort_alphabetically + "name ASC" + else + "public_topic_count DESC" + end + + tags = TagGroup.visible(guardian).find_by(name: tag_group)&.tags&.order(tag_order) || [] + render json: { + tags: ActiveModel::ArraySerializer.new(tags, each_serializer: TagSerializer).as_json, + } end end end diff --git a/spec/system/page_objects/components/preset_composer_input.rb b/spec/system/page_objects/components/preset_composer_input.rb index 8763c72..1fd1593 100644 --- a/spec/system/page_objects/components/preset_composer_input.rb +++ b/spec/system/page_objects/components/preset_composer_input.rb @@ -21,6 +21,11 @@ def get_last_label input.last.find(".name").text end + def get_first_list_options + input.first.click + input.first.find(".select-kit-collection").find_all("li") + end + def input find(".tag-group_wrapper").find_all(".select-kit.combobox.combo-box") end diff --git a/spec/system/preset_topic_composer_spec.rb b/spec/system/preset_topic_composer_spec.rb index 6ddcbf0..5b8cd36 100644 --- a/spec/system/preset_topic_composer_spec.rb +++ b/spec/system/preset_topic_composer_spec.rb @@ -232,5 +232,24 @@ def self.add_new_json(json) button = find("li[title='New Question3']") expect(button[:class]).to include("is-highlighted") end + + it "should sort alphabetically if SiteSetting is enabled" do + SiteSetting.tags_sort_alphabetically = true + Fabricate(:topic, tags: [tag_synonym_for_tag1]) + visit "/" + + preset_dropdown = PageObjects::Components::PresetTopicDropdown.new + preset_dropdown.select("New Question2") + preset_input = PageObjects::Components::PresetComposerInput.new + expect(preset_input.get_first_list_options.first.text).to eq(tag1.name) + + SiteSetting.tags_sort_alphabetically = false + visit "/" + + preset_dropdown = PageObjects::Components::PresetTopicDropdown.new + preset_dropdown.select("New Question2") + preset_input = PageObjects::Components::PresetComposerInput.new + expect(preset_input.get_first_list_options.first.text).to eq(tag_synonym_for_tag1.name) + end end end