about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/application_helper.rb7
-rw-r--r--spec/helpers/application_helper_spec.rb5
2 files changed, 10 insertions, 2 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index a56bbe59e..e2baecede 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -38,8 +38,11 @@ module ApplicationHelper
 
   def linkify(status)
     auto_link(HTMLEntities.new.encode(status.text), link: :urls, html: { rel: 'nofollow noopener' }).gsub(Account::MENTION_RE) do |m|
-      account = account_from_mentions(Account::MENTION_RE.match(m)[1], status.mentions)
-      "#{m.split('@').first}<a href=\"#{url_for_target(account)}\" class=\"mention\">@<span>#{account.acct}</span></a>"
+      if account = account_from_mentions(Account::MENTION_RE.match(m)[1], status.mentions)
+        "#{m.split('@').first}<a href=\"#{url_for_target(account)}\" class=\"mention\">@<span>#{account.acct}</span></a>"
+      else
+        m
+      end
     end.html_safe
   end
 
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 30b3653ee..d294b9587 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -44,6 +44,11 @@ RSpec.describe ApplicationHelper, type: :helper do
       status.mentions.create(account: alice)
       expect(helper.linkify(status)).to match('<a href="http://test.host/users/alice" class="mention">@<span>alice</span></a>')
     end
+
+    it 'leaves mention of unresolvable user alone' do
+      status = Fabricate(:status, text: 'Hello @foo', account: bob)
+      expect(helper.linkify(status)).to match('Hello @foo')
+    end
   end
 
   describe '#account_from_mentions' do