lib.itmens/social/tests.py

80 lines
2.9 KiB
Python
Raw Normal View History

2022-12-13 06:44:29 +00:00
from django.test import TestCase
2022-12-13 06:44:29 +00:00
from catalog.models import *
from journal.models import *
2023-07-20 21:59:49 -04:00
from takahe.utils import Takahe
2022-12-13 06:44:29 +00:00
from users.models import User
from .models import *
2022-12-13 06:44:29 +00:00
class SocialTest(TestCase):
2023-07-20 21:59:49 -04:00
databases = "__all__"
2022-12-13 06:44:29 +00:00
def setUp(self):
self.book1 = Edition.objects.create(title="Hyperion")
self.book2 = Edition.objects.create(title="Andymion")
2022-12-13 18:12:43 +00:00
self.movie = Edition.objects.create(title="Fight Club")
2024-07-03 00:07:07 -04:00
self.alice = User.register(username="Alice")
self.bob = User.register(username="Bob")
2022-12-13 06:44:29 +00:00
def test_timeline(self):
2023-07-20 21:59:49 -04:00
alice_feed = self.alice.identity.activity_manager
bob_feed = self.bob.identity.activity_manager
2022-12-13 18:12:43 +00:00
# alice see 0 activity in timeline in the beginning
2023-07-20 21:59:49 -04:00
self.assertEqual(len(alice_feed.get_timeline()), 0)
2022-12-13 06:44:29 +00:00
2022-12-13 18:12:43 +00:00
# 1 activity after adding first book to shelf
2023-11-20 12:13:43 -05:00
Mark(self.alice.identity, self.book1).update(ShelfType.WISHLIST, visibility=1)
2023-07-20 21:59:49 -04:00
self.assertEqual(len(alice_feed.get_timeline()), 1)
2022-12-13 18:12:43 +00:00
# 2 activities after adding second book to shelf
2023-11-20 12:13:43 -05:00
Mark(self.alice.identity, self.book2).update(ShelfType.WISHLIST)
2023-07-20 21:59:49 -04:00
self.assertEqual(len(alice_feed.get_timeline()), 2)
2022-12-13 18:12:43 +00:00
# 2 activities after change first mark
2023-11-20 12:13:43 -05:00
Mark(self.alice.identity, self.book1).update(ShelfType.PROGRESS)
2023-07-20 21:59:49 -04:00
self.assertEqual(len(alice_feed.get_timeline()), 2)
2022-12-13 18:12:43 +00:00
2022-12-13 16:33:58 -05:00
# bob see 0 activity in timeline in the beginning
2023-07-20 21:59:49 -04:00
self.assertEqual(len(bob_feed.get_timeline()), 0)
2022-12-13 18:12:43 +00:00
# bob follows alice, see 2 activities
2023-07-20 21:59:49 -04:00
self.bob.identity.follow(self.alice.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 2)
# bob mute, then unmute alice
self.bob.identity.mute(self.alice.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 0)
self.bob.identity.unmute(self.alice.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 2)
2022-12-13 18:12:43 +00:00
# alice:3 bob:2 after alice adding second book to shelf as private
2023-11-20 12:13:43 -05:00
Mark(self.alice.identity, self.movie).update(ShelfType.WISHLIST, visibility=2)
2023-07-20 21:59:49 -04:00
self.assertEqual(len(alice_feed.get_timeline()), 3)
self.assertEqual(len(bob_feed.get_timeline()), 2)
# alice mute bob
self.alice.identity.mute(self.bob.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 2)
# bob unfollow alice
self.bob.identity.unfollow(self.alice.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 0)
# bob follow alice
self.bob.identity.follow(self.alice.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 2)
# alice block bob
self.alice.identity.block(self.bob.identity)
Takahe._force_state_cycle()
self.assertEqual(len(bob_feed.get_timeline()), 0)