Coverage for catalog/tests/test_models.py: 96.23%
51 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-29 10:34 -0700
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-29 10:34 -0700
1from django.test import TestCase 1a
3from ..models import Genre, Language 1a
4from .factories import AuthorFactory, BookFactory 1a
7class BookModelTest(TestCase): 1a
8 def setUp(self): 1a
9 # Create a book
10 self.author = AuthorFactory() 1a
11 self.book = BookFactory() 1a
13 def test_book___str__(self): 1a
14 assert str(self.book) == self.book.title 1a
16 def test_get_absolute_url(self): 1a
17 url = self.book.get_absolute_url() 1a
18 assert url == f"/catalog/book/{self.book.id}" 1a
21class GenreModelTest(TestCase): 1a
22 def setUp(self): 1a
23 self.genre = Genre.objects.create(name="Fiction") 1a
25 def test_genre___str__(self): 1a
26 assert str(self.genre) == self.genre.name 1a
29class LanguageModelTest(TestCase): 1a
30 def setUp(self): 1a
31 self.language = Language.objects.create(name="English") 1a
33 def test_genre___str__(self): 1a
34 assert str(self.language) == self.language.name 1a
37class AuthorModelTest(TestCase): 1a
38 """Set up non-modified objects used by all test methods."""
40 def setUp(self): 1a
41 self.author = AuthorFactory() 1a
42 """ 1a
43 @classmethod
44 def setUpTestData(cls):
45 Author.objects.create(first_name="Thomas", last_name="Pynchon")
46 Author.objects.create(
47 first_name="William",
48 last_name="Burroughs",
49 middle_name="S.",
50 )
51 """
53 def test_first_name_label(self): 1a
54 field_label = self.author._meta.get_field("first_name").verbose_name 1a
55 self.assertEqual(field_label, "first name") 1a
57 def test_last_name_label(self): 1a
58 field_label = self.author._meta.get_field("last_name").verbose_name 1a
59 self.assertEqual(field_label, "last name") 1a
61 def test_date_of_birth_label(self): 1a
62 field_label = self.author._meta.get_field("date_of_birth").verbose_name 1a
63 self.assertEqual(field_label, "date of birth") 1a
65 def test_date_of_death_label(self): 1a
66 field_label = self.author._meta.get_field("date_of_death").verbose_name 1a
67 self.assertEqual(field_label, "Died") 1a
69 def test_first_name_max_length(self): 1a
70 max_length = self.author._meta.get_field("first_name").max_length 1a
71 self.assertEqual(max_length, 100) 1a
73 def test_last_name_max_length(self): 1a
74 max_length = self.author._meta.get_field("last_name").max_length 1a
75 self.assertEqual(max_length, 100) 1a
77 """ 1a
78 def test_object_name_is_last_name_comma_first_name(self):
79 # author = Author.objects.get(id=1)
80 expected_object_name = "{0}, {1}".format(
81 self.author.last_name, self.author.first_name
82 )
84 self.assertEqual(str(self.author), expected_object_name)
85 """
87 def test_get_absolute_url(self): 1a
88 self.assertEqual( 1a
89 self.author.get_absolute_url(), f"/catalog/author/{self.author.id}"
90 )
92 def test_middlename__str__(self): 1a
93 if self.author.middle_name is not None: 93 ↛ 99line 93 didn't jump to line 99 because the condition on line 93 was always true1a
94 self.assertEqual( 1a
95 str(self.author),
96 f"{self.author.last_name}, {self.author.first_name} {self.author.middle_name}",
97 )
98 else:
99 self.assertEqual(
100 str(self.author),
101 f"{self.author.last_name}, {self.author.first_name}",
102 )