Coverage for apis/tests/test_views.py: 100.00%
25 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-04 11:03 -0700
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-04 11:03 -0700
1from django.contrib.auth import get_user_model 1a
2from django.urls import reverse 1a
3from rest_framework import status 1a
4from rest_framework.test import APITestCase 1a
6from books.models import Book 1a
9class APITests(APITestCase): 1a
10 @classmethod 1a
11 def setUpTestData(cls): 1a
12 cls.book = Book.objects.create( 1a
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( 1a
23 username="bookreader",
24 password="T3stP@s5123",
25 )
27 def test_api_listview(self): 1a
28 self.client.login(username="bookreader", password="T3stP@s5123") 1a
29 response = self.client.get(reverse("book_list")) 1a
30 self.assertEqual(response.status_code, status.HTTP_200_OK) 1a
31 self.assertEqual(Book.objects.count(), 1) 1a
32 self.assertContains(response, self.book) 1a
34 def test_api_logged_out_deny_listview_access(self): 1a
35 response = self.client.get(reverse("book_list")) 1a
36 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 1a
38 def test_api_detailview(self): 1a
39 self.client.login(username="bookreader", password="T3stP@s5123") 1a
40 response = self.client.get( 1a
41 reverse("book_detail", kwargs={"pk": self.book.id}), format="json"
42 )
43 self.assertEqual(response.status_code, status.HTTP_200_OK) 1a
44 self.assertEqual(Book.objects.count(), 1) 1a
45 self.assertContains(response, "Build web APIs") 1a