Files
mostovik-backend/tests/apps/core/test_viewsets.py
Aleksandr Meshchriakov f121445313 feat(core): add core module with mixins, services, and background jobs
- Add Model Mixins: TimestampMixin, SoftDeleteMixin, AuditMixin, etc.
- Add Base Services: BaseService, BulkOperationsMixin, QueryOptimizerMixin
- Add Base ViewSets with bulk operations
- Add BackgroundJob model for Celery task tracking
- Add BaseAppCommand for management commands
- Add permissions, pagination, filters, cache, logging
- Migrate tests to factory_boy + faker
- Add CHANGELOG.md
- 297 tests passing
2026-01-21 11:47:26 +01:00

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))