Fixes remaining test patches
This commit is contained in:
parent
80241e59a7
commit
76e90cb3f6
|
@ -92,8 +92,11 @@ class ActivityObject:
|
||||||
|
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
# we can't set many to many and reverse fields on an unsaved object
|
# we can't set many to many and reverse fields on an unsaved object
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
instance.save(broadcast=False)
|
instance.save(broadcast=False)
|
||||||
|
except TypeError:
|
||||||
|
instance.save()
|
||||||
except IntegrityError as e:
|
except IntegrityError as e:
|
||||||
raise ActivitySerializerError(e)
|
raise ActivitySerializerError(e)
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Note(ActivityObject):
|
||||||
''' Note activity '''
|
''' Note activity '''
|
||||||
published: str
|
published: str
|
||||||
attributedTo: str
|
attributedTo: str
|
||||||
content: str
|
content: str = ''
|
||||||
to: List[str] = field(default_factory=lambda: [])
|
to: List[str] = field(default_factory=lambda: [])
|
||||||
cc: List[str] = field(default_factory=lambda: [])
|
cc: List[str] = field(default_factory=lambda: [])
|
||||||
replies: Dict = field(default_factory=lambda: {})
|
replies: Dict = field(default_factory=lambda: {})
|
||||||
|
|
|
@ -23,7 +23,7 @@ class BaseActivity(TestCase):
|
||||||
'mouse', 'mouse@mouse.mouse', 'mouseword',
|
'mouse', 'mouse@mouse.mouse', 'mouseword',
|
||||||
local=True, localname='mouse')
|
local=True, localname='mouse')
|
||||||
self.user.remote_id = 'http://example.com/a/b'
|
self.user.remote_id = 'http://example.com/a/b'
|
||||||
self.user.save()
|
self.user.save(broadcast=False)
|
||||||
|
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath(
|
datafile = pathlib.Path(__file__).parent.joinpath(
|
||||||
'../data/ap_user.json'
|
'../data/ap_user.json'
|
||||||
|
@ -167,12 +167,15 @@ class BaseActivity(TestCase):
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
self.user.avatar.file #pylint: disable=pointless-statement
|
self.user.avatar.file #pylint: disable=pointless-statement
|
||||||
|
|
||||||
|
# this would trigger a broadcast because it's a local user
|
||||||
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
activity.to_model(models.User, self.user)
|
activity.to_model(models.User, self.user)
|
||||||
self.assertIsNotNone(self.user.avatar.name)
|
self.assertIsNotNone(self.user.avatar.name)
|
||||||
self.assertIsNotNone(self.user.avatar.file)
|
self.assertIsNotNone(self.user.avatar.file)
|
||||||
|
|
||||||
def test_to_model_many_to_many(self):
|
def test_to_model_many_to_many(self):
|
||||||
''' annoying that these all need special handling '''
|
''' annoying that these all need special handling '''
|
||||||
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
content='test status',
|
content='test status',
|
||||||
user=self.user,
|
user=self.user,
|
||||||
|
@ -208,6 +211,7 @@ class BaseActivity(TestCase):
|
||||||
def test_to_model_one_to_many(self):
|
def test_to_model_one_to_many(self):
|
||||||
''' these are reversed relationships, where the secondary object
|
''' these are reversed relationships, where the secondary object
|
||||||
keys the primary object but not vice versa '''
|
keys the primary object but not vice versa '''
|
||||||
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
content='test status',
|
content='test status',
|
||||||
user=self.user,
|
user=self.user,
|
||||||
|
@ -242,6 +246,7 @@ class BaseActivity(TestCase):
|
||||||
@responses.activate
|
@responses.activate
|
||||||
def test_set_related_field(self):
|
def test_set_related_field(self):
|
||||||
''' celery task to add back-references to created objects '''
|
''' celery task to add back-references to created objects '''
|
||||||
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
status = models.Status.objects.create(
|
status = models.Status.objects.create(
|
||||||
content='test status',
|
content='test status',
|
||||||
user=self.user,
|
user=self.user,
|
||||||
|
|
|
@ -39,6 +39,7 @@ class Relationship(TestCase):
|
||||||
|
|
||||||
def test_user_follows_from_request(self):
|
def test_user_follows_from_request(self):
|
||||||
''' convert a follow request into a follow '''
|
''' convert a follow request into a follow '''
|
||||||
|
real_broadcast = models.UserFollowRequest.broadcast
|
||||||
def mock_broadcast(_, activity, user):
|
def mock_broadcast(_, activity, user):
|
||||||
''' introspect what's being sent out '''
|
''' introspect what's being sent out '''
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
|
@ -63,12 +64,13 @@ class Relationship(TestCase):
|
||||||
self.assertEqual(rel.status, 'follows')
|
self.assertEqual(rel.status, 'follows')
|
||||||
self.assertEqual(rel.user_subject, self.local_user)
|
self.assertEqual(rel.user_subject, self.local_user)
|
||||||
self.assertEqual(rel.user_object, self.remote_user)
|
self.assertEqual(rel.user_object, self.remote_user)
|
||||||
|
models.UserFollowRequest.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_user_follows_from_request_custom_remote_id(self):
|
def test_user_follows_from_request_custom_remote_id(self):
|
||||||
''' store a specific remote id for a relationship provided by remote '''
|
''' store a specific remote id for a relationship provided by remote '''
|
||||||
with patch(
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
'bookwyrm.models.activitypub_mixin.ActivitypubMixin.broadcast'):
|
|
||||||
request = models.UserFollowRequest.objects.create(
|
request = models.UserFollowRequest.objects.create(
|
||||||
user_subject=self.local_user,
|
user_subject=self.local_user,
|
||||||
user_object=self.remote_user,
|
user_object=self.remote_user,
|
||||||
|
@ -92,6 +94,7 @@ class Relationship(TestCase):
|
||||||
|
|
||||||
def test_follow_request_activity(self):
|
def test_follow_request_activity(self):
|
||||||
''' accept a request and make it a relationship '''
|
''' accept a request and make it a relationship '''
|
||||||
|
real_broadcast = models.UserFollowRequest.broadcast
|
||||||
def mock_broadcast(_, activity, user):
|
def mock_broadcast(_, activity, user):
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
self.assertEqual(activity['actor'], self.local_user.remote_id)
|
self.assertEqual(activity['actor'], self.local_user.remote_id)
|
||||||
|
@ -103,10 +106,12 @@ class Relationship(TestCase):
|
||||||
user_subject=self.local_user,
|
user_subject=self.local_user,
|
||||||
user_object=self.remote_user,
|
user_object=self.remote_user,
|
||||||
)
|
)
|
||||||
|
models.UserFollowRequest.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
def test_follow_request_accept(self):
|
def test_follow_request_accept(self):
|
||||||
''' accept a request and make it a relationship '''
|
''' accept a request and make it a relationship '''
|
||||||
|
real_broadcast = models.UserFollowRequest.broadcast
|
||||||
def mock_broadcast(_, activity, user):
|
def mock_broadcast(_, activity, user):
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
self.assertEqual(activity['type'], 'Accept')
|
self.assertEqual(activity['type'], 'Accept')
|
||||||
|
@ -126,10 +131,12 @@ class Relationship(TestCase):
|
||||||
rel = models.UserFollows.objects.get()
|
rel = models.UserFollows.objects.get()
|
||||||
self.assertEqual(rel.user_subject, self.remote_user)
|
self.assertEqual(rel.user_subject, self.remote_user)
|
||||||
self.assertEqual(rel.user_object, self.local_user)
|
self.assertEqual(rel.user_object, self.local_user)
|
||||||
|
models.UserFollowRequest.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
def test_follow_request_reject(self):
|
def test_follow_request_reject(self):
|
||||||
''' accept a request and make it a relationship '''
|
''' accept a request and make it a relationship '''
|
||||||
|
real_broadcast = models.UserFollowRequest.broadcast
|
||||||
def mock_reject(_, activity, user):
|
def mock_reject(_, activity, user):
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
self.assertEqual(activity['type'], 'Reject')
|
self.assertEqual(activity['type'], 'Reject')
|
||||||
|
@ -146,3 +153,4 @@ class Relationship(TestCase):
|
||||||
|
|
||||||
self.assertFalse(models.UserFollowRequest.objects.exists())
|
self.assertFalse(models.UserFollowRequest.objects.exists())
|
||||||
self.assertFalse(models.UserFollows.objects.exists())
|
self.assertFalse(models.UserFollows.objects.exists())
|
||||||
|
models.UserFollowRequest.broadcast = real_broadcast
|
||||||
|
|
|
@ -18,16 +18,19 @@ class Shelf(TestCase):
|
||||||
|
|
||||||
def test_remote_id(self):
|
def test_remote_id(self):
|
||||||
''' shelves use custom remote ids '''
|
''' shelves use custom remote ids '''
|
||||||
|
real_broadcast = models.Shelf.broadcast
|
||||||
models.Shelf.broadcast = lambda x, y, z: None
|
models.Shelf.broadcast = lambda x, y, z: None
|
||||||
shelf = models.Shelf.objects.create(
|
shelf = models.Shelf.objects.create(
|
||||||
name='Test Shelf', identifier='test-shelf',
|
name='Test Shelf', identifier='test-shelf',
|
||||||
user=self.local_user)
|
user=self.local_user)
|
||||||
expected_id = 'https://%s/user/mouse/shelf/test-shelf' % settings.DOMAIN
|
expected_id = 'https://%s/user/mouse/shelf/test-shelf' % settings.DOMAIN
|
||||||
self.assertEqual(shelf.get_remote_id(), expected_id)
|
self.assertEqual(shelf.get_remote_id(), expected_id)
|
||||||
|
models.Shelf.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
def test_to_activity(self):
|
def test_to_activity(self):
|
||||||
''' jsonify it '''
|
''' jsonify it '''
|
||||||
|
real_broadcast = models.Shelf.broadcast
|
||||||
models.Shelf.broadcast = lambda x, y, z: None
|
models.Shelf.broadcast = lambda x, y, z: None
|
||||||
shelf = models.Shelf.objects.create(
|
shelf = models.Shelf.objects.create(
|
||||||
name='Test Shelf', identifier='test-shelf',
|
name='Test Shelf', identifier='test-shelf',
|
||||||
|
@ -39,10 +42,12 @@ class Shelf(TestCase):
|
||||||
self.assertEqual(activity_json['type'], 'Shelf')
|
self.assertEqual(activity_json['type'], 'Shelf')
|
||||||
self.assertEqual(activity_json['name'], 'Test Shelf')
|
self.assertEqual(activity_json['name'], 'Test Shelf')
|
||||||
self.assertEqual(activity_json['owner'], self.local_user.remote_id)
|
self.assertEqual(activity_json['owner'], self.local_user.remote_id)
|
||||||
|
models.Shelf.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
def test_create_update_shelf(self):
|
def test_create_update_shelf(self):
|
||||||
''' create and broadcast shelf creation '''
|
''' create and broadcast shelf creation '''
|
||||||
|
real_broadcast = models.Shelf.broadcast
|
||||||
def create_mock(_, activity, user):
|
def create_mock(_, activity, user):
|
||||||
''' ok '''
|
''' ok '''
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
|
@ -65,10 +70,14 @@ class Shelf(TestCase):
|
||||||
shelf.name = 'arthur russel'
|
shelf.name = 'arthur russel'
|
||||||
shelf.save()
|
shelf.save()
|
||||||
self.assertEqual(shelf.name, 'arthur russel')
|
self.assertEqual(shelf.name, 'arthur russel')
|
||||||
|
models.Shelf.broadcast = real_broadcast
|
||||||
|
|
||||||
|
|
||||||
def test_shelve(self):
|
def test_shelve(self):
|
||||||
''' create and broadcast shelf creation '''
|
''' create and broadcast shelf creation '''
|
||||||
|
real_broadcast = models.Shelf.broadcast
|
||||||
|
real_shelfbook_broadcast = models.ShelfBook.broadcast
|
||||||
|
|
||||||
def add_mock(_, activity, user):
|
def add_mock(_, activity, user):
|
||||||
''' ok '''
|
''' ok '''
|
||||||
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
self.assertEqual(user.remote_id, self.local_user.remote_id)
|
||||||
|
@ -99,3 +108,6 @@ class Shelf(TestCase):
|
||||||
models.ShelfBook.broadcast = remove_mock
|
models.ShelfBook.broadcast = remove_mock
|
||||||
shelf_book.delete()
|
shelf_book.delete()
|
||||||
self.assertFalse(shelf.books.exists())
|
self.assertFalse(shelf.books.exists())
|
||||||
|
|
||||||
|
models.ShelfBook.broadcast = real_shelfbook_broadcast
|
||||||
|
models.Shelf.broadcast = real_broadcast
|
||||||
|
|
|
@ -240,6 +240,7 @@ class Status(TestCase):
|
||||||
|
|
||||||
def test_favorite(self):
|
def test_favorite(self):
|
||||||
''' fav a status '''
|
''' fav a status '''
|
||||||
|
real_broadcast = models.Favorite.broadcast
|
||||||
def fav_broadcast_mock(_, activity, user):
|
def fav_broadcast_mock(_, activity, user):
|
||||||
''' ok '''
|
''' ok '''
|
||||||
self.assertEqual(user.remote_id, self.user.remote_id)
|
self.assertEqual(user.remote_id, self.user.remote_id)
|
||||||
|
@ -258,6 +259,7 @@ class Status(TestCase):
|
||||||
self.assertEqual(activity['type'], 'Like')
|
self.assertEqual(activity['type'], 'Like')
|
||||||
self.assertEqual(activity['actor'], self.user.remote_id)
|
self.assertEqual(activity['actor'], self.user.remote_id)
|
||||||
self.assertEqual(activity['object'], status.remote_id)
|
self.assertEqual(activity['object'], status.remote_id)
|
||||||
|
models.Favorite.broadcast = real_broadcast
|
||||||
|
|
||||||
def test_boost(self):
|
def test_boost(self):
|
||||||
''' boosting, this one's a bit fussy '''
|
''' boosting, this one's a bit fussy '''
|
||||||
|
|
|
@ -93,7 +93,11 @@ class BookViews(TestCase):
|
||||||
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
shelf = models.Shelf.objects.create(
|
shelf = models.Shelf.objects.create(
|
||||||
name='Test Shelf', user=self.local_user)
|
name='Test Shelf', user=self.local_user)
|
||||||
shelf.books.add(edition1)
|
models.ShelfBook.objects.create(
|
||||||
|
book=edition1,
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=shelf,
|
||||||
|
)
|
||||||
models.ReadThrough.objects.create(
|
models.ReadThrough.objects.create(
|
||||||
user=self.local_user, book=edition1)
|
user=self.local_user, book=edition1)
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
|
''' tests updating reading progress '''
|
||||||
|
from datetime import datetime
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
from django.test import TestCase, Client
|
from django.test import TestCase, Client
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from bookwyrm import models
|
from bookwyrm import models
|
||||||
|
|
||||||
@patch('bookwyrm.broadcast.broadcast_task.delay')
|
@patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay')
|
||||||
class ReadThrough(TestCase):
|
class ReadThrough(TestCase):
|
||||||
|
''' readthrough tests '''
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
''' basic user and book data '''
|
||||||
self.client = Client()
|
self.client = Client()
|
||||||
|
|
||||||
self.work = models.Work.objects.create(
|
self.work = models.Work.objects.create(
|
||||||
|
@ -25,6 +28,7 @@ class ReadThrough(TestCase):
|
||||||
'cinco', 'cinco@example.com', 'seissiete',
|
'cinco', 'cinco@example.com', 'seissiete',
|
||||||
local=True, localname='cinco')
|
local=True, localname='cinco')
|
||||||
|
|
||||||
|
with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'):
|
||||||
self.client.force_login(self.user)
|
self.client.force_login(self.user)
|
||||||
|
|
||||||
def test_create_basic_readthrough(self, delay_mock):
|
def test_create_basic_readthrough(self, delay_mock):
|
||||||
|
@ -38,13 +42,15 @@ class ReadThrough(TestCase):
|
||||||
readthroughs = self.edition.readthrough_set.all()
|
readthroughs = self.edition.readthrough_set.all()
|
||||||
self.assertEqual(len(readthroughs), 1)
|
self.assertEqual(len(readthroughs), 1)
|
||||||
self.assertEqual(readthroughs[0].progressupdate_set.count(), 0)
|
self.assertEqual(readthroughs[0].progressupdate_set.count(), 0)
|
||||||
self.assertEqual(readthroughs[0].start_date,
|
self.assertEqual(
|
||||||
|
readthroughs[0].start_date,
|
||||||
datetime(2020, 11, 27, tzinfo=timezone.utc))
|
datetime(2020, 11, 27, tzinfo=timezone.utc))
|
||||||
self.assertEqual(readthroughs[0].progress, None)
|
self.assertEqual(readthroughs[0].progress, None)
|
||||||
self.assertEqual(readthroughs[0].finish_date, None)
|
self.assertEqual(readthroughs[0].finish_date, None)
|
||||||
self.assertEqual(delay_mock.call_count, 1)
|
self.assertEqual(delay_mock.call_count, 1)
|
||||||
|
|
||||||
def test_create_progress_readthrough(self, delay_mock):
|
def test_create_progress_readthrough(self, delay_mock):
|
||||||
|
''' a readthrough with progress '''
|
||||||
self.assertEqual(self.edition.readthrough_set.count(), 0)
|
self.assertEqual(self.edition.readthrough_set.count(), 0)
|
||||||
|
|
||||||
self.client.post('/start-reading/{}'.format(self.edition.id), {
|
self.client.post('/start-reading/{}'.format(self.edition.id), {
|
||||||
|
@ -54,7 +60,8 @@ class ReadThrough(TestCase):
|
||||||
|
|
||||||
readthroughs = self.edition.readthrough_set.all()
|
readthroughs = self.edition.readthrough_set.all()
|
||||||
self.assertEqual(len(readthroughs), 1)
|
self.assertEqual(len(readthroughs), 1)
|
||||||
self.assertEqual(readthroughs[0].start_date,
|
self.assertEqual(
|
||||||
|
readthroughs[0].start_date,
|
||||||
datetime(2020, 11, 27, tzinfo=timezone.utc))
|
datetime(2020, 11, 27, tzinfo=timezone.utc))
|
||||||
self.assertEqual(readthroughs[0].progress, 50)
|
self.assertEqual(readthroughs[0].progress, 50)
|
||||||
self.assertEqual(readthroughs[0].finish_date, None)
|
self.assertEqual(readthroughs[0].finish_date, None)
|
||||||
|
@ -76,7 +83,9 @@ class ReadThrough(TestCase):
|
||||||
self.assertEqual(len(progress_updates), 2)
|
self.assertEqual(len(progress_updates), 2)
|
||||||
self.assertEqual(progress_updates[1].mode, models.ProgressMode.PAGE)
|
self.assertEqual(progress_updates[1].mode, models.ProgressMode.PAGE)
|
||||||
self.assertEqual(progress_updates[1].progress, 100)
|
self.assertEqual(progress_updates[1].progress, 100)
|
||||||
self.assertEqual(delay_mock.call_count, 1) # Edit doesn't publish anything
|
|
||||||
|
# Edit doesn't publish anything
|
||||||
|
self.assertEqual(delay_mock.call_count, 1)
|
||||||
|
|
||||||
self.client.post('/delete-readthrough', {
|
self.client.post('/delete-readthrough', {
|
||||||
'id': readthroughs[0].id,
|
'id': readthroughs[0].id,
|
Loading…
Reference in New Issue