"""Tests for core ViewSets""" from apps.core.pagination import StandardPagination from apps.core.viewsets import ( BaseViewSet, BulkMixin, OwnerViewSet, ReadOnlyViewSet, ) from django.test import TestCase from rest_framework import viewsets from rest_framework.permissions import IsAuthenticated class BaseViewSetTest(TestCase): """Tests for BaseViewSet""" def test_inherits_from_model_viewset(self): """Test BaseViewSet inherits from ModelViewSet""" self.assertTrue(issubclass(BaseViewSet, viewsets.ModelViewSet)) def test_has_pagination_class(self): """Test BaseViewSet has pagination_class""" self.assertEqual(BaseViewSet.pagination_class, StandardPagination) def test_has_permission_classes(self): """Test BaseViewSet has permission_classes""" self.assertIn(IsAuthenticated, BaseViewSet.permission_classes) def test_has_filter_backends(self): """Test BaseViewSet has filter_backends""" self.assertTrue(hasattr(BaseViewSet, "filter_backends")) self.assertIsInstance(BaseViewSet.filter_backends, list) self.assertTrue(len(BaseViewSet.filter_backends) > 0) def test_has_default_ordering(self): """Test BaseViewSet has default ordering""" self.assertEqual(BaseViewSet.ordering, ["-created_at"]) def test_has_serializer_classes_dict(self): """Test BaseViewSet has serializer_classes dict""" self.assertTrue(hasattr(BaseViewSet, "serializer_classes")) self.assertIsInstance(BaseViewSet.serializer_classes, dict) class ReadOnlyViewSetTest(TestCase): """Tests for ReadOnlyViewSet""" def test_inherits_from_readonly_model_viewset(self): """Test ReadOnlyViewSet inherits from ReadOnlyModelViewSet""" self.assertTrue(issubclass(ReadOnlyViewSet, viewsets.ReadOnlyModelViewSet)) def test_has_pagination_class(self): """Test ReadOnlyViewSet has pagination_class""" self.assertEqual(ReadOnlyViewSet.pagination_class, StandardPagination) def test_has_filter_backends(self): """Test ReadOnlyViewSet has filter_backends""" self.assertTrue(hasattr(ReadOnlyViewSet, "filter_backends")) self.assertTrue(len(ReadOnlyViewSet.filter_backends) > 0) class OwnerViewSetTest(TestCase): """Tests for OwnerViewSet""" def test_inherits_from_base_viewset(self): """Test OwnerViewSet inherits from BaseViewSet""" self.assertTrue(issubclass(OwnerViewSet, BaseViewSet)) def test_has_owner_field(self): """Test OwnerViewSet has owner_field attribute""" self.assertEqual(OwnerViewSet.owner_field, "user") class BulkMixinTest(TestCase): """Tests for BulkMixin""" def test_has_bulk_create_method(self): """Test BulkMixin has bulk_create method""" self.assertTrue(hasattr(BulkMixin, "bulk_create")) self.assertTrue(callable(BulkMixin.bulk_create)) def test_has_bulk_delete_method(self): """Test BulkMixin has bulk_delete method""" self.assertTrue(hasattr(BulkMixin, "bulk_delete")) self.assertTrue(callable(BulkMixin.bulk_delete))