mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-18 06:06:34 +00:00
Adds more readthrough model tests
This commit is contained in:
parent
2c78eddbeb
commit
e129b9c1f1
1 changed files with 66 additions and 12 deletions
|
@ -1,7 +1,9 @@
|
|||
""" testing models """
|
||||
import datetime
|
||||
from unittest.mock import patch
|
||||
from django.test import TestCase
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils import timezone
|
||||
|
||||
from bookwyrm import models
|
||||
|
||||
|
@ -21,27 +23,79 @@ class ReadThrough(TestCase):
|
|||
title="Example Edition", parent_work=self.work
|
||||
)
|
||||
|
||||
self.readthrough = models.ReadThrough.objects.create(
|
||||
user=self.user, book=self.edition
|
||||
def test_valid_date(self):
|
||||
"""can't finish a book before you start it"""
|
||||
start = timezone.now()
|
||||
finish = start + datetime.timedelta(days=1)
|
||||
# just make sure there's no errors
|
||||
models.ReadThrough.objects.create(
|
||||
user=self.user,
|
||||
book=self.edition,
|
||||
start_date=start,
|
||||
finish_date=finish,
|
||||
)
|
||||
|
||||
def test_valid_date_null_start(self):
|
||||
"""can't finish a book before you start it"""
|
||||
start = timezone.now()
|
||||
finish = start + datetime.timedelta(days=1)
|
||||
# just make sure there's no errors
|
||||
models.ReadThrough.objects.create(
|
||||
user=self.user,
|
||||
book=self.edition,
|
||||
finish_date=finish,
|
||||
)
|
||||
|
||||
def test_valid_date_null_finish(self):
|
||||
"""can't finish a book before you start it"""
|
||||
start = timezone.now()
|
||||
# just make sure there's no errors
|
||||
models.ReadThrough.objects.create(
|
||||
user=self.user,
|
||||
book=self.edition,
|
||||
start_date=start,
|
||||
)
|
||||
|
||||
def test_valid_date_null(self):
|
||||
"""can't finish a book before you start it"""
|
||||
# just make sure there's no errors
|
||||
models.ReadThrough.objects.create(
|
||||
user=self.user,
|
||||
book=self.edition,
|
||||
)
|
||||
|
||||
def test_valid_date_same(self):
|
||||
"""can't finish a book before you start it"""
|
||||
start = timezone.now()
|
||||
# just make sure there's no errors
|
||||
models.ReadThrough.objects.create(
|
||||
user=self.user,
|
||||
book=self.edition,
|
||||
start_date=start,
|
||||
finish_date=start,
|
||||
)
|
||||
|
||||
def test_progress_update(self):
|
||||
"""Test progress updates"""
|
||||
self.readthrough.create_update() # No-op, no progress yet
|
||||
self.readthrough.progress = 10
|
||||
self.readthrough.create_update()
|
||||
self.readthrough.progress = 20
|
||||
self.readthrough.progress_mode = models.ProgressMode.PERCENT
|
||||
self.readthrough.create_update()
|
||||
readthrough = models.ReadThrough.objects.create(
|
||||
user=self.user, book=self.edition
|
||||
)
|
||||
|
||||
updates = self.readthrough.progressupdate_set.order_by("created_date").all()
|
||||
readthrough.create_update() # No-op, no progress yet
|
||||
readthrough.progress = 10
|
||||
readthrough.create_update()
|
||||
readthrough.progress = 20
|
||||
readthrough.progress_mode = models.ProgressMode.PERCENT
|
||||
readthrough.create_update()
|
||||
|
||||
updates = readthrough.progressupdate_set.order_by("created_date").all()
|
||||
self.assertEqual(len(updates), 2)
|
||||
self.assertEqual(updates[0].progress, 10)
|
||||
self.assertEqual(updates[0].mode, models.ProgressMode.PAGE)
|
||||
self.assertEqual(updates[1].progress, 20)
|
||||
self.assertEqual(updates[1].mode, models.ProgressMode.PERCENT)
|
||||
|
||||
self.readthrough.progress = -10
|
||||
self.assertRaises(ValidationError, self.readthrough.clean_fields)
|
||||
update = self.readthrough.create_update()
|
||||
readthrough.progress = -10
|
||||
self.assertRaises(ValidationError, readthrough.clean_fields)
|
||||
update = readthrough.create_update()
|
||||
self.assertRaises(ValidationError, update.clean_fields)
|
||||
|
|
Loading…
Reference in a new issue