lib.itmens/journal/tests.py

182 lines
7.4 KiB
Python
Raw Normal View History

import time
2022-12-11 23:20:28 +00:00
from django.test import TestCase
2022-12-11 23:20:28 +00:00
from catalog.models import *
from users.models import User
from .models import *
2022-12-11 23:20:28 +00:00
class CollectionTest(TestCase):
2023-07-20 21:59:49 -04:00
databases = "__all__"
2022-12-11 23:20:28 +00:00
def setUp(self):
self.book1 = Edition.objects.create(title="Hyperion")
self.book2 = Edition.objects.create(title="Andymion")
2023-07-20 21:59:49 -04:00
self.user = User.register(email="a@b.com", username="user")
2022-12-11 23:20:28 +00:00
def test_collection(self):
2023-07-20 21:59:49 -04:00
Collection.objects.create(title="test", owner=self.user.identity)
collection = Collection.objects.get(title="test", owner=self.user.identity)
2022-12-12 16:46:37 +00:00
self.assertEqual(collection.catalog_item.title, "test")
2022-12-29 14:30:31 -05:00
member1 = collection.append_item(self.book1)
member1.note = "my notes"
member1.save()
2023-01-08 22:10:48 -05:00
collection.append_item(self.book2, note="test")
2022-12-11 23:20:28 +00:00
self.assertEqual(list(collection.ordered_items), [self.book1, self.book2])
collection.move_up_item(self.book1)
self.assertEqual(list(collection.ordered_items), [self.book1, self.book2])
collection.move_up_item(self.book2)
self.assertEqual(list(collection.ordered_items), [self.book2, self.book1])
members = collection.ordered_members
collection.update_member_order([members[1].id, members[0].id])
self.assertEqual(list(collection.ordered_items), [self.book1, self.book2])
2022-12-29 14:30:31 -05:00
member1 = collection.get_member_for_item(self.book1)
self.assertEqual(member1.note, "my notes")
2023-01-08 22:10:48 -05:00
member2 = collection.get_member_for_item(self.book2)
self.assertEqual(member2.note, "test")
2022-12-11 23:20:28 +00:00
2022-12-13 18:12:43 +00:00
class ShelfTest(TestCase):
2023-07-20 21:59:49 -04:00
databases = "__all__"
2022-12-11 23:20:28 +00:00
def setUp(self):
pass
2022-12-13 18:12:43 +00:00
def test_shelf(self):
2023-07-20 21:59:49 -04:00
user = User.register(email="a@b.com", username="user")
shelf_manager = user.identity.shelf_manager
self.assertEqual(len(shelf_manager.shelf_list.items()), 3)
2022-12-11 23:20:28 +00:00
book1 = Edition.objects.create(title="Hyperion")
book2 = Edition.objects.create(title="Andymion")
2022-12-29 23:49:28 -05:00
q1 = shelf_manager.get_shelf(ShelfType.WISHLIST)
q2 = shelf_manager.get_shelf(ShelfType.PROGRESS)
2022-12-11 23:20:28 +00:00
self.assertIsNotNone(q1)
self.assertIsNotNone(q2)
self.assertEqual(q1.members.all().count(), 0)
self.assertEqual(q2.members.all().count(), 0)
2022-12-17 16:18:16 -05:00
shelf_manager.move_item(book1, ShelfType.WISHLIST)
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-17 16:18:16 -05:00
shelf_manager.move_item(book2, ShelfType.WISHLIST)
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-11 23:20:28 +00:00
self.assertEqual(q1.members.all().count(), 2)
2022-12-17 16:18:16 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS)
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-11 23:20:28 +00:00
self.assertEqual(q1.members.all().count(), 1)
self.assertEqual(q2.members.all().count(), 1)
2023-01-12 11:02:14 -05:00
log = shelf_manager.get_log_for_item(book1)
self.assertEqual(log.count(), 2)
2023-07-20 21:59:49 -04:00
last_log = log.last()
self.assertEqual(last_log.metadata if last_log else 42, {})
2022-12-29 14:30:31 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS, metadata={"progress": 1})
time.sleep(0.001)
2022-12-11 23:20:28 +00:00
self.assertEqual(q1.members.all().count(), 1)
self.assertEqual(q2.members.all().count(), 1)
2022-12-13 18:12:43 +00:00
log = shelf_manager.get_log_for_item(book1)
2022-12-11 23:20:28 +00:00
self.assertEqual(log.count(), 3)
2023-07-20 21:59:49 -04:00
last_log = log.last()
self.assertEqual(last_log.metadata if last_log else 42, {"progress": 1})
2022-12-29 14:30:31 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS, metadata={"progress": 1})
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-13 18:12:43 +00:00
log = shelf_manager.get_log_for_item(book1)
2022-12-11 23:20:28 +00:00
self.assertEqual(log.count(), 3)
2023-07-20 21:59:49 -04:00
last_log = log.last()
self.assertEqual(last_log.metadata if last_log else 42, {"progress": 1})
2022-12-29 14:30:31 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS, metadata={"progress": 10})
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-13 18:12:43 +00:00
log = shelf_manager.get_log_for_item(book1)
2022-12-11 23:20:28 +00:00
self.assertEqual(log.count(), 4)
2023-07-20 21:59:49 -04:00
last_log = log.last()
self.assertEqual(last_log.metadata if last_log else 42, {"progress": 10})
2022-12-17 16:18:16 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS)
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-13 18:12:43 +00:00
log = shelf_manager.get_log_for_item(book1)
2022-12-11 23:20:28 +00:00
self.assertEqual(log.count(), 4)
2023-07-20 21:59:49 -04:00
last_log = log.last()
self.assertEqual(last_log.metadata if last_log else 42, {"progress": 10})
2022-12-29 14:30:31 -05:00
shelf_manager.move_item(book1, ShelfType.PROGRESS, metadata={"progress": 90})
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2022-12-13 18:12:43 +00:00
log = shelf_manager.get_log_for_item(book1)
2022-12-11 23:20:28 +00:00
self.assertEqual(log.count(), 5)
2023-07-20 21:59:49 -04:00
self.assertEqual(Mark(user.identity, book1).visibility, 0)
2022-12-29 14:30:31 -05:00
shelf_manager.move_item(
book1, ShelfType.PROGRESS, metadata={"progress": 90}, visibility=1
)
2023-01-12 11:02:14 -05:00
time.sleep(0.001)
2023-07-20 21:59:49 -04:00
self.assertEqual(Mark(user.identity, book1).visibility, 1)
2022-12-16 01:08:10 -05:00
self.assertEqual(shelf_manager.get_log_for_item(book1).count(), 5)
2022-12-12 16:46:37 +00:00
2023-07-20 21:59:49 -04:00
# test delete mark -> one more log
Mark(user.identity, book1).delete()
self.assertEqual(log.count(), 6)
2023-07-13 16:32:09 +02:00
2022-12-12 16:46:37 +00:00
class TagTest(TestCase):
2023-07-20 21:59:49 -04:00
databases = "__all__"
2022-12-12 16:46:37 +00:00
def setUp(self):
self.book1 = Edition.objects.create(title="Hyperion")
self.book2 = Edition.objects.create(title="Andymion")
2023-07-20 21:59:49 -04:00
self.movie1 = Edition.objects.create(title="Fight Club")
self.user1 = User.register(email="a@b.com", username="user")
self.user2 = User.register(email="x@b.com", username="user2")
self.user3 = User.register(email="y@b.com", username="user3")
2022-12-12 16:46:37 +00:00
pass
2022-12-17 16:18:16 -05:00
def test_user_tag(self):
2023-06-06 21:57:13 -04:00
t1 = "tag 1"
t2 = "tag 2"
t3 = "tag 3"
2023-07-20 21:59:49 -04:00
TagManager.tag_item(self.book1, self.user2.identity, [t1, t3])
2022-12-17 17:18:08 -05:00
self.assertEqual(self.book1.tags, [t1, t3])
2023-07-20 21:59:49 -04:00
TagManager.tag_item(self.book1, self.user2.identity, [t2, t3])
2022-12-17 17:18:08 -05:00
self.assertEqual(self.book1.tags, [t2, t3])
2022-12-17 16:18:16 -05:00
2022-12-15 17:29:35 -05:00
class MarkTest(TestCase):
2023-07-20 21:59:49 -04:00
databases = "__all__"
2022-12-15 17:29:35 -05:00
def setUp(self):
self.book1 = Edition.objects.create(title="Hyperion")
2023-07-20 21:59:49 -04:00
self.user1 = User.register(email="a@b.com", username="user")
pref = self.user1.preference
2023-01-10 23:00:05 -05:00
pref.default_visibility = 2
pref.save()
2022-12-15 17:29:35 -05:00
def test_mark(self):
2023-07-20 21:59:49 -04:00
mark = Mark(self.user1.identity, self.book1)
2022-12-15 17:29:35 -05:00
self.assertEqual(mark.shelf_type, None)
self.assertEqual(mark.shelf_label, None)
self.assertEqual(mark.comment_text, None)
self.assertEqual(mark.rating_grade, None)
2023-01-10 23:00:05 -05:00
self.assertEqual(mark.visibility, 2)
2022-12-15 17:29:35 -05:00
self.assertEqual(mark.review, None)
self.assertEqual(mark.tags, [])
2022-12-29 14:30:31 -05:00
mark.update(ShelfType.WISHLIST, "a gentle comment", 9, 1)
2022-12-15 17:29:35 -05:00
2023-07-20 21:59:49 -04:00
mark = Mark(self.user1.identity, self.book1)
2022-12-17 16:18:16 -05:00
self.assertEqual(mark.shelf_type, ShelfType.WISHLIST)
2022-12-29 23:49:28 -05:00
self.assertEqual(mark.shelf_label, "想读的书")
self.assertEqual(mark.comment_text, "a gentle comment")
self.assertEqual(mark.rating_grade, 9)
2022-12-15 17:29:35 -05:00
self.assertEqual(mark.visibility, 1)
self.assertEqual(mark.review, None)
self.assertEqual(mark.tags, [])
2023-07-20 21:59:49 -04:00
def test_review(self):
review = Review.update_item_review(
self.book1, self.user1.identity, "Critic", "Review"
)
mark = Mark(self.user1.identity, self.book1)
2022-12-15 17:29:35 -05:00
self.assertEqual(mark.review, review)
2023-07-20 21:59:49 -04:00
Review.update_item_review(self.book1, self.user1.identity, None, None)
mark = Mark(self.user1.identity, self.book1)
self.assertIsNone(mark.review)
2022-12-15 17:29:35 -05:00
2023-07-20 21:59:49 -04:00
def test_tag(self):
TagManager.tag_item(self.book1, self.user1.identity, [" Sci-Fi ", " fic "])
mark = Mark(self.user1.identity, self.book1)
2023-06-06 21:57:13 -04:00
self.assertEqual(mark.tags, ["Sci-Fi", "fic"])