diff --git a/lib/discourse_tagging.rb b/lib/discourse_tagging.rb index 2c0519cd199..ac2061b41f9 100644 --- a/lib/discourse_tagging.rb +++ b/lib/discourse_tagging.rb @@ -202,10 +202,13 @@ module DiscourseTagging end def self.clean_tag(tag) + tag = tag.dup tag.downcase! if SiteSetting.force_lowercase_tags - tag.strip - .gsub(/\s+/, '-').squeeze('-') - .gsub(TAGS_FILTER_REGEXP, '')[0...SiteSetting.max_tag_length] + tag.strip! + tag.gsub!(/\s+/, '-') + tag.squeeze!('-') + tag.gsub!(TAGS_FILTER_REGEXP, '') + tag[0...SiteSetting.max_tag_length] end def self.tags_for_saving(tags_arg, guardian, opts = {}) diff --git a/spec/components/discourse_tagging_spec.rb b/spec/components/discourse_tagging_spec.rb index 5d52375406b..f080a03f8cb 100644 --- a/spec/components/discourse_tagging_spec.rb +++ b/spec/components/discourse_tagging_spec.rb @@ -209,7 +209,8 @@ describe DiscourseTagging do describe "clean_tag" do it "downcases new tags if setting enabled" do - expect(DiscourseTagging.clean_tag("HeLlO")).to eq("hello") + expect(DiscourseTagging.clean_tag("HeLlO".freeze)).to eq("hello") + SiteSetting.force_lowercase_tags = false expect(DiscourseTagging.clean_tag("HeLlO")).to eq("HeLlO") end