diff --git a/app/models/post.rb b/app/models/post.rb
index a340590b8..21bf9fe7d 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -110,7 +110,17 @@ class Post < ActiveRecord::Base
def link_count
return 0 unless raw.present?
- cooked_document.search("a[href]").count
+
+ # Don't include @mentions in the link count
+ total = 0
+ cooked_document.search("a[href]").each do |l|
+ html_class = l.attributes['class']
+ if html_class.present?
+ next if html_class.to_s == 'mention' && l.attributes['href'].to_s =~ /^\/users\//
+ end
+ total +=1
+ end
+ total
end
def max_mention_validator
diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb
index efa6edf41..91758c8d3 100644
--- a/spec/models/post_spec.rb
+++ b/spec/models/post_spec.rb
@@ -149,16 +149,21 @@ describe Post do
let(:visitor) { Fabricate(:user, trust_level: TrustLevel.levels[:visitor]) }
let(:post_one_link) { Fabricate.build(:post, post_args.merge(raw: "[sherlock](http://www.bbc.co.uk/programmes/b018ttws)", user: visitor)) }
let(:post_two_links) { Fabricate.build(:post, post_args.merge(raw: "discourse twitter", user: visitor)) }
+ let(:post_with_mentions) { Fabricate.build(:post, post_args.merge(raw: "hello @#{visitor.username} how are you doing?") )}
- it "returns 0 images for an empty post" do
+ it "returns 0 links for an empty post" do
Fabricate.build(:post).link_count.should == 0
end
- it "finds images from markdown" do
+ it "returns 0 links for a post with mentions" do
+ post_with_mentions.link_count.should == 0
+ end
+
+ it "finds links from markdown" do
post_one_link.link_count.should == 1
end
- it "finds images from HTML" do
+ it "finds links from HTML" do
post_two_links.link_count.should == 2
end