diff --git a/lib/discourse_tagging.rb b/lib/discourse_tagging.rb index 4d15f60612c..67e4d711712 100644 --- a/lib/discourse_tagging.rb +++ b/lib/discourse_tagging.rb @@ -64,9 +64,8 @@ module DiscourseTagging def self.filter_allowed_tags(query, guardian, opts={}) term = opts[:term] if term.present? - term.downcase! - term.gsub!(/[^a-z0-9\.\-\_]*/, '') term.gsub!("_", "\\_") + term = clean_tag(term) query = query.where('tags.name like ?', "%#{term}%") end diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index fcfcdb754d6..909bb1126ef 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -130,6 +130,21 @@ describe TagsController do json = ::JSON.parse(response.body) expect(json["results"].map{|j| j["id"]}).to eq(['cooltag']) end + + it "supports Chinese and Russian" do + tag_names = ['房地产', 'тема-в-разработке'] + tag_names.each { |name| Fabricate(:tag, name: name) } + + xhr :get, :search, q: '房' + expect(response).to be_success + json = ::JSON.parse(response.body) + expect(json["results"].map{|j| j["id"]}).to eq(['房地产']) + + xhr :get, :search, q: 'тема' + expect(response).to be_success + json = ::JSON.parse(response.body) + expect(json["results"].map{|j| j["id"]}).to eq(['тема-в-разработке']) + end end end end