You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

52 lines
2.0 KiB

from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
class LibraryURLResolutionTests(APITestCase):
"""
Test suite to ensure all library API endpoints resolve and execute cleanly.
"""
def test_category_list_endpoint(self):
"""Test categories list endpoint is accessible"""
url = reverse('category-list')
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_pinned_collection_list_endpoint(self):
"""Test pinned collections endpoint is accessible"""
url = reverse('pinned-collection-list')
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_collection_list_endpoint(self):
"""Test collections endpoint is accessible"""
url = reverse('collection-list')
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_book_list_endpoint(self):
"""Test books list endpoint is accessible"""
url = reverse('book-list')
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_book_detail_endpoint(self):
"""Test book detail endpoint is accessible (may return 404 if no data)"""
url = reverse('book-detail', kwargs={'slug': 'test-book'})
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_downloaded_books_list_endpoint(self):
"""Test downloaded books list endpoint is accessible"""
url = reverse('downloaded-books-list')
response = self.client.get(url)
self.assertLess(response.status_code, 500)
def test_book_download_endpoint(self):
"""Test book download endpoint is accessible (POST)"""
url = reverse('book-download')
# Hitting POST endpoint with GET or empty POST should resolve safely without throwing 500
response = self.client.post(url)
self.assertLess(response.status_code, 500)