diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/activities/models/test_post.py | 35 | ||||
-rw-r--r-- | tests/conftest.py | 40 |
2 files changed, 69 insertions, 6 deletions
diff --git a/tests/activities/models/test_post.py b/tests/activities/models/test_post.py index 06d26ed..a5f2f79 100644 --- a/tests/activities/models/test_post.py +++ b/tests/activities/models/test_post.py @@ -32,7 +32,9 @@ def test_fetch_post(httpx_mock: HTTPXMock, config_system): @pytest.mark.django_db -def test_linkify_mentions_remote(identity, remote_identity): +def test_linkify_mentions_remote( + identity, identity2, remote_identity, remote_identity2 +): """ Tests that we can linkify post mentions properly for remote use """ @@ -77,9 +79,28 @@ def test_linkify_mentions_remote(identity, remote_identity): == '<p>Hey <a href="https://remote.test/@test/">@test</a></p>' ) + # Test that collapsing only applies to the first unique, short username + post = Post.objects.create( + content="<p>Hey @TeSt@remote.test and @test@remote2.test</p>", + author=identity, + local=True, + ) + post.mentions.set([remote_identity, remote_identity2]) + assert post.safe_content_remote() == ( + '<p>Hey <a href="https://remote.test/@test/">@test</a> ' + 'and <a href="https://remote2.test/@test/">@test@remote2.test</a></p>' + ) + + post.content = "<p>Hey @TeSt, @Test@remote.test and @test</p>" + assert post.safe_content_remote() == ( + '<p>Hey <a href="https://remote2.test/@test/">@test</a>, ' + '<a href="https://remote.test/@test/">@test@remote.test</a> ' + 'and <a href="https://remote2.test/@test/">@test</a></p>' + ) + @pytest.mark.django_db -def test_linkify_mentions_local(identity, remote_identity): +def test_linkify_mentions_local(identity, identity2, remote_identity): """ Tests that we can linkify post mentions properly for local use """ @@ -96,14 +117,16 @@ def test_linkify_mentions_local(identity, remote_identity): ) # Test a full username (local) post = Post.objects.create( - content="<p>@test@example.com, welcome!</p>", + content="<p>@test@example.com, welcome! @test@example2.com @test@example.com</p>", author=identity, local=True, ) post.mentions.add(identity) - assert ( - post.safe_content_local() - == '<p><a href="/@test@example.com/">@test</a>, welcome!</p>' + post.mentions.add(identity2) + assert post.safe_content_local() == ( + '<p><a href="/@test@example.com/">@test</a>, welcome!' + ' <a href="/@test@example2.com/">@test@example2.com</a>' + ' <a href="/@test@example.com/">@test</a></p>' ) # Test a full username (remote) with no <p> post = Post.objects.create( diff --git a/tests/conftest.py b/tests/conftest.py index 80622f0..c67717c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -80,6 +80,12 @@ def domain() -> Domain: @pytest.fixture @pytest.mark.django_db +def domain2() -> Domain: + return Domain.objects.create(domain="example2.com", local=True, public=True) + + +@pytest.fixture +@pytest.mark.django_db def identity(user, domain) -> Identity: """ Creates a basic test identity with a user and domain. @@ -96,6 +102,23 @@ def identity(user, domain) -> Identity: @pytest.fixture +@pytest.mark.django_db +def identity2(user, domain2) -> Identity: + """ + Creates a basic test identity with a user and domain. + """ + identity = Identity.objects.create( + actor_uri="https://example2.com/@test@example2.com/", + username="test", + domain=domain2, + name="Test User Domain2", + local=True, + ) + identity.users.set([user]) + return identity + + +@pytest.fixture def other_identity(user, domain) -> Identity: """ Creates a different basic test identity with a user and domain. @@ -129,6 +152,23 @@ def remote_identity() -> Identity: @pytest.fixture +@pytest.mark.django_db +def remote_identity2() -> Identity: + """ + Creates a basic remote test identity with a domain. + """ + domain = Domain.objects.create(domain="remote2.test", local=False) + return Identity.objects.create( + actor_uri="https://remote2.test/test-actor/", + profile_uri="https://remote2.test/@test/", + username="test", + domain=domain, + name="Test2 Remote User", + local=False, + ) + + +@pytest.fixture def stator(config_system) -> StatorRunner: """ Return an initialized StatorRunner for tests that need state transitioning |