Fix hashtag being handled as common link in the preview card (#515)

This commit is contained in:
Humberto Rocha 2023-02-19 22:35:54 -05:00 committed by GitHub
parent 1f3f28e8ff
commit e625fae13d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 3 deletions

View File

@ -200,9 +200,9 @@ class FediverseHtmlParser(HTMLParser):
hashtag = hashtag.lstrip("#") hashtag = hashtag.lstrip("#")
self.hashtags.add(hashtag.lower()) self.hashtags.add(hashtag.lower())
if self.uri_domain: if self.uri_domain:
return f'<a href="https://{self.uri_domain}/tags/{hashtag.lower()}/">#{hashtag}</a>' return f'<a href="https://{self.uri_domain}/tags/{hashtag.lower()}/" rel="tag">#{hashtag}</a>'
else: else:
return f'<a href="/tags/{hashtag.lower()}/">#{hashtag}</a>' return f'<a href="/tags/{hashtag.lower()}/" rel="tag">#{hashtag}</a>'
def create_emoji(self, shortcode) -> str: def create_emoji(self, shortcode) -> str:
""" """

View File

@ -429,3 +429,23 @@ def test_inbound_posts(
# Run stator and ensure that deleted the post # Run stator and ensure that deleted the post
stator.run_single_cycle_sync() stator.run_single_cycle_sync()
assert not Post.objects.filter(object_uri="https://remote.test/test-post").exists() assert not Post.objects.filter(object_uri="https://remote.test/test-post").exists()
@pytest.mark.django_db
def test_post_hashtag_to_ap(identity: Identity, config_system):
"""
Tests post hashtags conversion to AP format.
"""
post = Post.create_local(author=identity, content="Hello #world")
assert post.hashtags == ["world"]
ap = post.to_create_ap()
assert ap["object"]["tag"] == [
{
"href": "https://example.com/tags/world/",
"name": "#world",
"type": "Hashtag",
}
]
assert "#world" in ap["object"]["content"]
assert 'rel="tag"' in ap["object"]["content"]

View File

@ -102,7 +102,7 @@ def test_parser(identity):
) )
assert ( assert (
parser.html parser.html
== '<a href="http://example.com#notahashtag" rel="nofollow">something</a> <a href="/tags/hashtag/">#hashtag</a> <a href="/tags/hashtagtwo/">#hashtagtwo</a>' == '<a href="http://example.com#notahashtag" rel="nofollow">something</a> <a href="/tags/hashtag/" rel="tag">#hashtag</a> <a href="/tags/hashtagtwo/" rel="tag">#hashtagtwo</a>'
) )
assert parser.plain_text == "http://example.com#notahashtag #hashtag #hashtagtwo" assert parser.plain_text == "http://example.com#notahashtag #hashtag #hashtagtwo"
assert parser.hashtags == {"hashtag", "hashtagtwo"} assert parser.hashtags == {"hashtag", "hashtagtwo"}