moviewyrm/bookwyrm/tests/models/test_book_model.py

71 lines
2.3 KiB
Python
Raw Normal View History

2020-05-10 00:10:02 +00:00
''' testing models '''
from django.test import TestCase
from bookwyrm import models, settings
2020-10-29 19:32:37 +00:00
from bookwyrm.models.book import isbn_10_to_13, isbn_13_to_10
2020-05-10 00:10:02 +00:00
class Book(TestCase):
''' not too much going on in the books model but here we are '''
def setUp(self):
2020-05-14 18:28:45 +00:00
self.work = models.Work.objects.create(
title='Example Work',
remote_id='https://example.com/book/1'
)
self.first_edition = models.Edition.objects.create(
title='Example Edition',
parent_work=self.work,
)
self.second_edition = models.Edition.objects.create(
title='Another Example Edition',
parent_work=self.work,
)
2020-05-10 00:10:02 +00:00
def test_remote_id(self):
2020-11-13 17:47:35 +00:00
remote_id = 'https://%s/book/%d' % (settings.DOMAIN, self.work.id)
self.assertEqual(self.work.get_remote_id(), remote_id)
2020-12-04 01:18:23 +00:00
self.assertEqual(self.work.remote_id, remote_id)
2020-05-10 00:10:02 +00:00
def test_create_book(self):
''' you shouldn't be able to create Books (only editions and works) '''
self.assertRaises(
ValueError,
models.Book.objects.create,
title='Invalid Book'
)
2020-10-29 19:32:37 +00:00
def test_isbn_10_to_13(self):
2020-11-08 01:48:50 +00:00
''' checksums and so on '''
2020-10-29 19:32:37 +00:00
isbn_10 = '178816167X'
isbn_13 = isbn_10_to_13(isbn_10)
self.assertEqual(isbn_13, '9781788161671')
2020-10-30 19:43:02 +00:00
isbn_10 = '1-788-16167-X'
isbn_13 = isbn_10_to_13(isbn_10)
self.assertEqual(isbn_13, '9781788161671')
2020-10-29 19:32:37 +00:00
def test_isbn_13_to_10(self):
2020-11-08 01:48:50 +00:00
''' checksums and so on '''
2020-10-29 19:32:37 +00:00
isbn_13 = '9781788161671'
isbn_10 = isbn_13_to_10(isbn_13)
self.assertEqual(isbn_10, '178816167X')
2020-10-30 19:43:02 +00:00
isbn_13 = '978-1788-16167-1'
isbn_10 = isbn_13_to_10(isbn_13)
self.assertEqual(isbn_10, '178816167X')
2020-05-10 00:10:02 +00:00
class Shelf(TestCase):
def setUp(self):
user = models.User.objects.create_user(
2020-12-04 01:18:23 +00:00
'mouse', 'mouse@mouse.mouse', 'mouseword', local=True)
2020-05-10 00:10:02 +00:00
models.Shelf.objects.create(
name='Test Shelf', identifier='test-shelf', user=user)
def test_remote_id(self):
2020-05-10 00:10:02 +00:00
''' editions and works use the same absolute id syntax '''
shelf = models.Shelf.objects.get(identifier='test-shelf')
expected_id = 'https://%s/user/mouse/shelf/test-shelf' % settings.DOMAIN
self.assertEqual(shelf.get_remote_id(), expected_id)