Coverage for apis/tests/test_views.py: 100.00%
25 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 19:27 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 19:27 -0700
1from django.contrib.auth import get_user_model
2from django.urls import reverse
3from rest_framework import status
4from rest_framework.test import APITestCase
6from books.models import Book
9class APITests(APITestCase):
10 @classmethod
11 def setUpTestData(cls):
12 cls.book = Book.objects.create(
13 title="Django for APIs",
14 subtitle="Build web APIs with Python and Django",
15 author="William S. Vincent",
16 pages="200",
17 publisher="Lean Publishing",
18 pubdate="2022-04-01",
19 price="29.99",
20 isbn="9781735467221",
21 )
22 cls.user = get_user_model().objects.create_user(
23 username="bookreader",
24 password="T3stP@s5123",
25 )
27 def test_api_listview(self):
28 self.client.login(username="bookreader", password="T3stP@s5123") 1b
29 response = self.client.get(reverse("book_list")) 1b
30 self.assertEqual(response.status_code, status.HTTP_200_OK) 1b
31 self.assertEqual(Book.objects.count(), 1) 1b
32 self.assertContains(response, self.book) 1b
34 def test_api_logged_out_deny_listview_access(self):
35 response = self.client.get(reverse("book_list")) 1d
36 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 1d
38 def test_api_detailview(self):
39 self.client.login(username="bookreader", password="T3stP@s5123") 1c
40 response = self.client.get( 1c
41 reverse("book_detail", kwargs={"pk": self.book.id}), format="json"
42 )
43 self.assertEqual(response.status_code, status.HTTP_200_OK) 1c
44 self.assertEqual(Book.objects.count(), 1) 1c
45 self.assertContains(response, "Build web APIs") 1c