From ca8eb75352ec6971a8e421c8f822aed8853ceba1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 9 May 2020 19:22:41 -0700 Subject: [PATCH] Tests for creating reviews and statuses --- fedireads/tests/test_review.py | 81 ++++++++++++++++++++++++++++++++++ fedireads/tests/test_status.py | 64 +++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 fedireads/tests/test_review.py create mode 100644 fedireads/tests/test_status.py diff --git a/fedireads/tests/test_review.py b/fedireads/tests/test_review.py new file mode 100644 index 000000000..097a2d5e7 --- /dev/null +++ b/fedireads/tests/test_review.py @@ -0,0 +1,81 @@ +from django.test import TestCase + +from fedireads import models +from fedireads import status as status_builder + + +class Review(TestCase): + ''' we have hecka ways to create statuses ''' + def setUp(self): + self.user = models.User.objects.create_user( + 'mouse', 'mouse@mouse.mouse', 'mouseword') + self.book = models.Edition.objects.create(title='Example Edition') + + + def test_create_review(self): + review = status_builder.create_review( + self.user, self.book, 'review name', 'content', 5) + self.assertEqual(review.name, 'review name') + self.assertEqual(review.content, 'content') + self.assertEqual(review.rating, 5) + + review = status_builder.create_review( + self.user, self.book, '
review
name', 'content', 5) + self.assertEqual(review.name, 'review name') + self.assertEqual(review.content, 'content') + self.assertEqual(review.rating, 5) + + def test_review_rating(self): + review = status_builder.create_review( + self.user, self.book, 'review name', 'content', -1) + self.assertEqual(review.name, 'review name') + self.assertEqual(review.content, 'content') + self.assertEqual(review.rating, None) + + review = status_builder.create_review( + self.user, self.book, 'review name', 'content', 6) + self.assertEqual(review.name, 'review name') + self.assertEqual(review.content, 'content') + self.assertEqual(review.rating, None) + + + def test_review_from_activity(self): + activity = { + 'id': 'https://example.com/user/mouse/review/9', + 'url': 'https://example.com/user/mouse/review/9', + 'inReplyTo': None, + 'published': '2020-05-04T00:00:00.000000+00:00', + 'attributedTo': 'https://example.com/user/mouse', + 'to': [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc': [ + 'https://example.com/user/mouse/followers' + ], + 'sensitive': False, + 'content': 'review content', + 'type': 'Article', + 'attachment': [], + 'replies': { + 'id': 'https://example.com/user/mouse/review/9/replies', + 'type': 'Collection', + 'first': { + 'type': 'CollectionPage', + 'next': 'https://example.com/user/mouse/review/9/replies?only_other_accounts=true&page=true', + 'partOf': 'https://example.com/user/mouse/review/9/replies', + 'items': [] + } + }, + 'inReplyToBook': self.book.absolute_id, + 'fedireadsType': 'Review', + 'name': 'review title', + 'rating': 3 + } + review = status_builder.create_review_from_activity( + self.user, activity) + self.assertEqual(review.content, 'review content') + self.assertEqual(review.name, 'review title') + self.assertEqual(review.rating, 3) + self.assertEqual(review.book, self.book) + self.assertEqual( + review.published_date, '2020-05-04T00:00:00.000000+00:00') diff --git a/fedireads/tests/test_status.py b/fedireads/tests/test_status.py new file mode 100644 index 000000000..dbec4b269 --- /dev/null +++ b/fedireads/tests/test_status.py @@ -0,0 +1,64 @@ +from django.test import TestCase + +from fedireads import models +from fedireads import status as status_builder + + +class Status(TestCase): + ''' we have hecka ways to create statuses ''' + def setUp(self): + self.user = models.User.objects.create_user( + 'mouse', 'mouse@mouse.mouse', 'mouseword') + + + def test_create_status(self): + content = 'statuses are usually replies' + status = status_builder.create_status( + self.user, content) + self.assertEqual(status.content, content) + + reply = status_builder.create_status( + self.user, content, reply_parent=status) + self.assertEqual(reply.content, content) + self.assertEqual(reply.reply_parent, status) + + def test_create_status_from_activity(self): + book = models.Edition.objects.create(title='Example Edition') + review = status_builder.create_review( + self.user, book, 'review name', 'content', 5) + activity = { + 'id': 'https://example.com/user/mouse/status/12', + 'url': 'https://example.com/user/mouse/status/12', + 'inReplyTo': review.absolute_id, + 'published': '2020-05-10T02:15:59.635557+00:00', + 'attributedTo': 'https://example.com/user/mouse', + 'to': [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc': [ + 'https://example.com/user/mouse/followers' + ], + 'sensitive': False, + 'content': 'reply to status', + 'type': 'Note', + 'attachment': [], + 'replies': { + 'id': 'https://example.com/user/mouse/status/12/replies', + 'type': 'Collection', + 'first': { + 'type': 'CollectionPage', + 'next': 'https://example.com/user/mouse/status/12/replies?only_other_accounts=true&page=true', + 'partOf': 'https://example.com/user/mouse/status/12/replies', + 'items': [] + } + } + } + + status = status_builder.create_status_from_activity( + self.user, activity) + self.assertEqual(status.reply_parent, review) + self.assertEqual(status.content, 'reply to status') + self.assertEqual( + status.published_date, + '2020-05-10T02:15:59.635557+00:00' + )