Coverage for catalog/tests/test_models.py: 96.43%
54 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 15:39 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 15:39 -0700
1from django.test import TestCase
3from ..models import Genre, Language
4from .factories import AuthorFactory, BookFactory
7class BookModelTest(TestCase):
8 def setUp(self):
9 # Create a book
10 self.author = AuthorFactory()
11 self.book = BookFactory()
13 def test_book___str__(self):
14 assert self.book.__str__() == self.book.title 1b
15 assert str(self.book) == self.book.title 1b
17 def test_get_absolute_url(self):
18 url = self.book.get_absolute_url() 1c
19 assert url == f"/catalog/book/{self.book.id}" 1c
22class GenreModelTest(TestCase):
23 def setUp(self):
24 self.genre = Genre.objects.create(name="Fiction")
26 def test_genre___str__(self):
27 assert self.genre.__str__() == self.genre.name 1d
28 assert str(self.genre) == self.genre.name 1d
31class LanguageModelTest(TestCase):
32 def setUp(self):
33 self.language = Language.objects.create(name="English")
35 def test_genre___str__(self):
36 assert self.language.__str__() == self.language.name 1e
37 assert str(self.language) == self.language.name 1e
40class AuthorModelTest(TestCase):
41 """Set up non-modified objects used by all test methods."""
43 def setUp(self):
44 self.author = AuthorFactory()
45 """
46 @classmethod
47 def setUpTestData(cls):
48 Author.objects.create(first_name="Thomas", last_name="Pynchon")
49 Author.objects.create(
50 first_name="William",
51 last_name="Burroughs",
52 middle_name="S.",
53 )
54 """
56 def test_first_name_label(self):
57 field_label = self.author._meta.get_field("first_name").verbose_name 1f
58 self.assertEqual(field_label, "first name") 1f
60 def test_last_name_label(self):
61 field_label = self.author._meta.get_field("last_name").verbose_name 1g
62 self.assertEqual(field_label, "last name") 1g
64 def test_date_of_birth_label(self):
65 field_label = self.author._meta.get_field("date_of_birth").verbose_name 1h
66 self.assertEqual(field_label, "date of birth") 1h
68 def test_date_of_death_label(self):
69 field_label = self.author._meta.get_field("date_of_death").verbose_name 1i
70 self.assertEqual(field_label, "Died") 1i
72 def test_first_name_max_length(self):
73 max_length = self.author._meta.get_field("first_name").max_length 1j
74 self.assertEqual(max_length, 100) 1j
76 def test_last_name_max_length(self):
77 max_length = self.author._meta.get_field("last_name").max_length 1k
78 self.assertEqual(max_length, 100) 1k
80 """
81 def test_object_name_is_last_name_comma_first_name(self):
82 # author = Author.objects.get(id=1)
83 expected_object_name = "{0}, {1}".format(
84 self.author.last_name, self.author.first_name
85 )
87 self.assertEqual(str(self.author), expected_object_name)
88 """
90 def test_get_absolute_url(self):
91 self.assertEqual( 1m
92 self.author.get_absolute_url(), f"/catalog/author/{self.author.id}"
93 )
95 def test_middlename__str__(self):
96 if self.author.middle_name is not None: 96 ↛ 102line 96 didn't jump to line 102 because the condition on line 96 was always true1l
97 self.assertEqual( 1l
98 self.author.__str__(),
99 f"{self.author.last_name}, {self.author.first_name} {self.author.middle_name}",
100 )
101 else:
102 self.assertEqual(
103 self.author.__str__(),
104 f"{self.author.last_name}, {self.author.first_name}",
105 )