87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
"""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))
|