forked from mirrors/bookwyrm
Merge pull request #1911 from bookwyrm-social/more-tests
Activitystreams tests
This commit is contained in:
commit
582b84ecaa
2 changed files with 81 additions and 2 deletions
|
@ -1,6 +1,9 @@
|
|||
""" testing activitystreams """
|
||||
from datetime import datetime
|
||||
from unittest.mock import patch
|
||||
from django.test import TestCase
|
||||
from django.utils import timezone
|
||||
|
||||
from bookwyrm import activitystreams, models
|
||||
|
||||
|
||||
|
@ -51,13 +54,63 @@ class Activitystreams(TestCase):
|
|||
"""the abstract base class for stream objects"""
|
||||
self.assertEqual(
|
||||
self.test_stream.stream_id(self.local_user),
|
||||
"{}-test".format(self.local_user.id),
|
||||
f"{self.local_user.id}-test",
|
||||
)
|
||||
self.assertEqual(
|
||||
self.test_stream.unread_id(self.local_user),
|
||||
"{}-test-unread".format(self.local_user.id),
|
||||
f"{self.local_user.id}-test-unread",
|
||||
)
|
||||
|
||||
def test_unread_by_status_type_id(self, *_):
|
||||
"""stream for status type"""
|
||||
self.assertEqual(
|
||||
self.test_stream.unread_by_status_type_id(self.local_user),
|
||||
f"{self.local_user.id}-test-unread-by-type",
|
||||
)
|
||||
|
||||
def test_get_rank(self, *_):
|
||||
"""sort order"""
|
||||
date = datetime(2022, 1, 28, 0, 0, tzinfo=timezone.utc)
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
privacy="direct",
|
||||
published_date=date,
|
||||
)
|
||||
self.assertEqual(
|
||||
str(self.test_stream.get_rank(status)),
|
||||
"1643328000.0",
|
||||
)
|
||||
|
||||
def test_get_activity_stream(self, *_):
|
||||
"""load statuses"""
|
||||
status = models.Status.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
privacy="direct",
|
||||
)
|
||||
status2 = models.Comment.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
privacy="direct",
|
||||
book=self.book,
|
||||
)
|
||||
models.Comment.objects.create(
|
||||
user=self.remote_user,
|
||||
content="hi",
|
||||
privacy="direct",
|
||||
book=self.book,
|
||||
)
|
||||
with patch("bookwyrm.activitystreams.r.set"), patch(
|
||||
"bookwyrm.activitystreams.r.delete"
|
||||
), patch("bookwyrm.activitystreams.ActivityStream.get_store") as redis_mock:
|
||||
redis_mock.return_value = [status.id, status2.id]
|
||||
result = self.test_stream.get_activity_stream(self.local_user)
|
||||
self.assertEqual(result.count(), 2)
|
||||
self.assertEqual(result.first(), status2)
|
||||
self.assertEqual(result.last(), status)
|
||||
self.assertIsInstance(result.first(), models.Comment)
|
||||
|
||||
def test_abstractstream_get_audience(self, *_):
|
||||
"""get a list of users that should see a status"""
|
||||
status = models.Status.objects.create(
|
||||
|
|
|
@ -52,3 +52,29 @@ class Activitystreams(TestCase):
|
|||
# yes book, yes audience
|
||||
result = activitystreams.BooksStream().get_statuses_for_user(self.local_user)
|
||||
self.assertEqual(list(result), [status])
|
||||
|
||||
def test_book_statuses(self, *_):
|
||||
"""statuses about a book"""
|
||||
alt_book = models.Edition.objects.create(
|
||||
title="hi", parent_work=self.book.parent_work
|
||||
)
|
||||
status = models.Status.objects.create(
|
||||
user=self.local_user, content="hi", privacy="public"
|
||||
)
|
||||
status = models.Comment.objects.create(
|
||||
user=self.remote_user, content="hi", privacy="public", book=alt_book
|
||||
)
|
||||
models.ShelfBook.objects.create(
|
||||
user=self.local_user,
|
||||
shelf=self.local_user.shelf_set.first(),
|
||||
book=self.book,
|
||||
)
|
||||
with patch(
|
||||
"bookwyrm.activitystreams.BooksStream.bulk_add_objects_to_store"
|
||||
) as redis_mock:
|
||||
activitystreams.BooksStream().add_book_statuses(self.local_user, self.book)
|
||||
args = redis_mock.call_args[0]
|
||||
queryset = args[0]
|
||||
self.assertEqual(queryset.count(), 1)
|
||||
self.assertTrue(status in queryset)
|
||||
self.assertEqual(args[1], f"{self.local_user.id}-books")
|
||||
|
|
Loading…
Reference in a new issue