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)