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

1from django.test import TestCase 

2 

3from ..models import Genre, Language 

4from .factories import AuthorFactory, BookFactory 

5 

6 

7class BookModelTest(TestCase): 

8 def setUp(self): 

9 # Create a book 

10 self.author = AuthorFactory() 

11 self.book = BookFactory() 

12 

13 def test_book___str__(self): 

14 assert self.book.__str__() == self.book.title 1b

15 assert str(self.book) == self.book.title 1b

16 

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

20 

21 

22class GenreModelTest(TestCase): 

23 def setUp(self): 

24 self.genre = Genre.objects.create(name="Fiction") 

25 

26 def test_genre___str__(self): 

27 assert self.genre.__str__() == self.genre.name 1d

28 assert str(self.genre) == self.genre.name 1d

29 

30 

31class LanguageModelTest(TestCase): 

32 def setUp(self): 

33 self.language = Language.objects.create(name="English") 

34 

35 def test_genre___str__(self): 

36 assert self.language.__str__() == self.language.name 1e

37 assert str(self.language) == self.language.name 1e

38 

39 

40class AuthorModelTest(TestCase): 

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

42 

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

55 

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

59 

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

63 

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

67 

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

71 

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

75 

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

79 

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 ) 

86 

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

88 """ 

89 

90 def test_get_absolute_url(self): 

91 self.assertEqual( 1m

92 self.author.get_absolute_url(), f"/catalog/author/{self.author.id}" 

93 ) 

94 

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 )