Commit 65cc277d authored by Sean McGivern's avatar Sean McGivern

Merge branch 'make_user_mentions_case_insensitive' into 'master'

Make user mentions case-insensitive

Closes #24493

See merge request !10285
parents 839183f2 e0601537
---
title: Make user mentions case-insensitive
merge_request: 10285
author: blackst0ne
...@@ -60,7 +60,7 @@ module Banzai ...@@ -60,7 +60,7 @@ module Banzai
self.class.references_in(text) do |match, username| self.class.references_in(text) do |match, username|
if username == 'all' && !skip_project_check? if username == 'all' && !skip_project_check?
link_to_all(link_content: link_content) link_to_all(link_content: link_content)
elsif namespace = namespaces[username] elsif namespace = namespaces[username.downcase]
link_to_namespace(namespace, link_content: link_content) || match link_to_namespace(namespace, link_content: link_content) || match
else else
match match
...@@ -74,7 +74,7 @@ module Banzai ...@@ -74,7 +74,7 @@ module Banzai
# The keys of this Hash are the namespace paths, the values the # The keys of this Hash are the namespace paths, the values the
# corresponding Namespace objects. # corresponding Namespace objects.
def namespaces def namespaces
@namespaces ||= Namespace.where_full_path_in(usernames).index_by(&:full_path) @namespaces ||= Namespace.where_full_path_in(usernames).index_by(&:full_path).transform_keys(&:downcase)
end end
# Returns all usernames referenced in the current document. # Returns all usernames referenced in the current document.
......
...@@ -83,6 +83,14 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do ...@@ -83,6 +83,14 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do
expect(doc.css('a').length).to eq 1 expect(doc.css('a').length).to eq 1
end end
it 'links to a User with different case-sensitivity' do
user = create(:user, username: 'RescueRanger')
doc = reference_filter("Hey #{user.to_reference.upcase}")
expect(doc.css('a').length).to eq 1
expect(doc.css('a').text).to eq(user.to_reference)
end
it 'includes a data-user attribute' do it 'includes a data-user attribute' do
doc = reference_filter("Hey #{reference}") doc = reference_filter("Hey #{reference}")
link = doc.css('a').first link = doc.css('a').first
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment