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

1from django.test import TestCase 1a

2 

3from ..models import Genre, Language 1a

4from .factories import AuthorFactory, BookFactory 1a

5 

6 

7class BookModelTest(TestCase): 1a

8 def setUp(self): 1a

9 # Create a book 

10 self.author = AuthorFactory() 1a

11 self.book = BookFactory() 1a

12 

13 def test_book___str__(self): 1a

14 assert str(self.book) == self.book.title 1a

15 

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

19 

20 

21class GenreModelTest(TestCase): 1a

22 def setUp(self): 1a

23 self.genre = Genre.objects.create(name="Fiction") 1a

24 

25 def test_genre___str__(self): 1a

26 assert str(self.genre) == self.genre.name 1a

27 

28 

29class LanguageModelTest(TestCase): 1a

30 def setUp(self): 1a

31 self.language = Language.objects.create(name="English") 1a

32 

33 def test_genre___str__(self): 1a

34 assert str(self.language) == self.language.name 1a

35 

36 

37class AuthorModelTest(TestCase): 1a

38 """Set up non-modified objects used by all test methods.""" 

39 

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 """ 

52 

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

56 

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

60 

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

64 

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

68 

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

72 

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

76 

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 ) 

83 

84 self.assertEqual(str(self.author), expected_object_name) 

85 """ 

86 

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 ) 

91 

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 )