bookwyrm/bookwyrm/tests/activitypub/test_quotation.py

54 lines
2 KiB
Python
Raw Normal View History

""" quotation activity object serializer class """
import json
import pathlib
from unittest.mock import patch
from django.test import TestCase
from bookwyrm import activitypub, models
class Quotation(TestCase):
2021-04-26 16:15:42 +00:00
"""we have hecka ways to create statuses"""
2021-03-08 16:49:10 +00:00
@classmethod
def setUpTestData(cls):
2021-04-26 16:15:42 +00:00
"""model objects we'll need"""
2021-08-02 23:05:40 +00:00
with patch("bookwyrm.models.user.set_remote_server.delay"):
cls.user = models.User.objects.create_user(
2021-08-02 23:05:40 +00:00
"mouse",
"mouse@mouse.mouse",
"mouseword",
local=False,
inbox="https://example.com/user/mouse/inbox",
outbox="https://example.com/user/mouse/outbox",
remote_id="https://example.com/user/mouse",
2021-05-26 21:57:29 +00:00
)
cls.book = models.Edition.objects.create(
2021-08-02 23:05:40 +00:00
title="Example Edition",
remote_id="https://example.com/book/1",
)
def setUp(self):
"""other test data"""
2021-03-08 16:49:10 +00:00
datafile = pathlib.Path(__file__).parent.joinpath("../data/ap_quotation.json")
self.status_data = json.loads(datafile.read_bytes())
def test_quotation_activity(self):
"""create a Quotation ap object from json"""
quotation = activitypub.Quotation(**self.status_data)
2021-03-08 16:49:10 +00:00
self.assertEqual(quotation.type, "Quotation")
self.assertEqual(quotation.id, "https://example.com/user/mouse/quotation/13")
self.assertEqual(quotation.content, "commentary")
self.assertEqual(quotation.quote, "quote body")
self.assertEqual(quotation.inReplyToBook, "https://example.com/book/1")
self.assertEqual(quotation.published, "2020-05-10T02:38:31.150343+00:00")
def test_activity_to_model(self):
2021-04-26 16:15:42 +00:00
"""create a model instance from an activity object"""
activity = activitypub.Quotation(**self.status_data)
quotation = activity.to_model(model=models.Quotation)
self.assertEqual(quotation.book, self.book)
self.assertEqual(quotation.user, self.user)