diff --git a/bookwyrm/tests/templatetags/test_bookwyrm_tags.py b/bookwyrm/tests/templatetags/test_bookwyrm_tags.py index ed4466f58..3265a905c 100644 --- a/bookwyrm/tests/templatetags/test_bookwyrm_tags.py +++ b/bookwyrm/tests/templatetags/test_bookwyrm_tags.py @@ -1,23 +1,15 @@ """ style fixes and lookups for templates """ -import re from unittest.mock import patch from django.test import TestCase -from django.utils import timezone from bookwyrm import models -from bookwyrm.templatetags import ( - bookwyrm_tags, - interaction, - markdown, - status_display, - utilities, -) +from bookwyrm.templatetags import bookwyrm_tags @patch("bookwyrm.activitystreams.add_status_task.delay") @patch("bookwyrm.activitystreams.remove_status_task.delay") -class TemplateTags(TestCase): +class BookWyrmTags(TestCase): """lotta different things here""" def setUp(self): @@ -52,83 +44,6 @@ class TemplateTags(TestCase): """there is no rating available""" self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0) - def test_get_user_identifer_local(self, *_): - """fall back to the simplest uid available""" - self.assertNotEqual(self.user.username, self.user.localname) - self.assertEqual(utilities.get_user_identifier(self.user), "mouse") - - def test_get_user_identifer_remote(self, *_): - """for a remote user, should be their full username""" - self.assertEqual( - utilities.get_user_identifier(self.remote_user), "rat@example.com" - ) - - @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") - def test_get_replies(self, *_): - """direct replies to a status""" - parent = models.Review.objects.create( - user=self.user, book=self.book, content="hi" - ) - first_child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - second_child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - third_child = models.Status.objects.create( - reply_parent=parent, - user=self.user, - deleted=True, - deleted_date=timezone.now(), - ) - - replies = status_display.get_replies(parent) - self.assertEqual(len(replies), 2) - self.assertTrue(first_child in replies) - self.assertTrue(second_child in replies) - self.assertFalse(third_child in replies) - - def test_get_parent(self, *_): - """get the reply parent of a status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - parent = models.Review.objects.create( - user=self.user, book=self.book, content="hi" - ) - child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - - result = status_display.get_parent(child) - self.assertEqual(result, parent) - self.assertIsInstance(result, models.Review) - - def test_get_user_liked(self, *_): - """did a user like a status""" - status = models.Review.objects.create(user=self.remote_user, book=self.book) - - self.assertFalse(interaction.get_user_liked(self.user, status)) - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Favorite.objects.create(user=self.user, status=status) - self.assertTrue(interaction.get_user_liked(self.user, status)) - - def test_get_user_boosted(self, *_): - """did a user boost a status""" - status = models.Review.objects.create(user=self.remote_user, book=self.book) - - self.assertFalse(interaction.get_user_boosted(self.user, status)) - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Boost.objects.create(user=self.user, boosted_status=status) - self.assertTrue(interaction.get_user_boosted(self.user, status)) - - def test_get_boosted(self, *_): - """load a boosted status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - status = models.Review.objects.create(user=self.remote_user, book=self.book) - boost = models.Boost.objects.create(user=self.user, boosted_status=status) - boosted = status_display.get_boosted(boost) - self.assertIsInstance(boosted, models.Review) - self.assertEqual(boosted, status) - def test_get_book_description(self, *_): """grab it from the edition or the parent""" work = models.Work.objects.create(title="Test Work") @@ -145,25 +60,6 @@ class TemplateTags(TestCase): self.book.save() self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello") - def test_get_uuid(self, *_): - """uuid functionality""" - uuid = utilities.get_uuid("hi") - self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid)) - - def test_get_markdown(self, *_): - """mardown format data""" - result = markdown.get_markdown("_hi_") - self.assertEqual(result, "
hi
") - - result = markdown.get_markdown("") - self.assertEqual(result, "hi
") - - def test_get_mentions(self, *_): - """list of people mentioned""" - status = models.Status.objects.create(content="hi", user=self.remote_user) - result = status_display.get_mentions(status, self.user) - self.assertEqual(result, "@rat@example.com ") - def test_related_status(self, *_): """gets the subclass model for a notification status""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): diff --git a/bookwyrm/tests/templatetags/test_interaction.py b/bookwyrm/tests/templatetags/test_interaction.py new file mode 100644 index 000000000..d32548e4c --- /dev/null +++ b/bookwyrm/tests/templatetags/test_interaction.py @@ -0,0 +1,53 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import interaction + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class InteractionTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_user_liked(self, *_): + """did a user like a status""" + status = models.Review.objects.create(user=self.remote_user, book=self.book) + + self.assertFalse(interaction.get_user_liked(self.user, status)) + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Favorite.objects.create(user=self.user, status=status) + self.assertTrue(interaction.get_user_liked(self.user, status)) + + def test_get_user_boosted(self, *_): + """did a user boost a status""" + status = models.Review.objects.create(user=self.remote_user, book=self.book) + + self.assertFalse(interaction.get_user_boosted(self.user, status)) + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Boost.objects.create(user=self.user, boosted_status=status) + self.assertTrue(interaction.get_user_boosted(self.user, status)) diff --git a/bookwyrm/tests/templatetags/test_markdown.py b/bookwyrm/tests/templatetags/test_markdown.py new file mode 100644 index 000000000..ba283a4f2 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_markdown.py @@ -0,0 +1,15 @@ +""" style fixes and lookups for templates """ +from django.test import TestCase +from bookwyrm.templatetags import markdown + + +class MarkdownTags(TestCase): + """lotta different things here""" + + def test_get_markdown(self): + """mardown format data""" + result = markdown.get_markdown("_hi_") + self.assertEqual(result, "hi
") + + result = markdown.get_markdown("") + self.assertEqual(result, "hi
") diff --git a/bookwyrm/tests/templatetags/test_status_display.py b/bookwyrm/tests/templatetags/test_status_display.py new file mode 100644 index 000000000..b3eaeab87 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_status_display.py @@ -0,0 +1,90 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase +from django.utils import timezone + +from bookwyrm import models +from bookwyrm.templatetags import status_display + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class StatusDisplayTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + def test_get_replies(self, *_): + """direct replies to a status""" + parent = models.Review.objects.create( + user=self.user, book=self.book, content="hi" + ) + first_child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + second_child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + third_child = models.Status.objects.create( + reply_parent=parent, + user=self.user, + deleted=True, + deleted_date=timezone.now(), + ) + + replies = status_display.get_replies(parent) + self.assertEqual(len(replies), 2) + self.assertTrue(first_child in replies) + self.assertTrue(second_child in replies) + self.assertFalse(third_child in replies) + + def test_get_parent(self, *_): + """get the reply parent of a status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + parent = models.Review.objects.create( + user=self.user, book=self.book, content="hi" + ) + child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + + result = status_display.get_parent(child) + self.assertEqual(result, parent) + self.assertIsInstance(result, models.Review) + + def test_get_boosted(self, *_): + """load a boosted status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + status = models.Review.objects.create(user=self.remote_user, book=self.book) + boost = models.Boost.objects.create(user=self.user, boosted_status=status) + boosted = status_display.get_boosted(boost) + self.assertIsInstance(boosted, models.Review) + self.assertEqual(boosted, status) + + def test_get_mentions(self, *_): + """list of people mentioned""" + status = models.Status.objects.create(content="hi", user=self.remote_user) + result = status_display.get_mentions(status, self.user) + self.assertEqual(result, "@rat@example.com ") diff --git a/bookwyrm/tests/templatetags/test_utilities.py b/bookwyrm/tests/templatetags/test_utilities.py new file mode 100644 index 000000000..f40d24dcf --- /dev/null +++ b/bookwyrm/tests/templatetags/test_utilities.py @@ -0,0 +1,52 @@ +""" style fixes and lookups for templates """ +import re +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import utilities + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class UtilitiesTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_user_identifer_local(self, *_): + """fall back to the simplest uid available""" + self.assertNotEqual(self.user.username, self.user.localname) + self.assertEqual(utilities.get_user_identifier(self.user), "mouse") + + def test_get_user_identifer_remote(self, *_): + """for a remote user, should be their full username""" + self.assertEqual( + utilities.get_user_identifier(self.remote_user), "rat@example.com" + ) + + def test_get_uuid(self, *_): + """uuid functionality""" + uuid = utilities.get_uuid("hi") + self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid))