uchill/backend/apps/materials/tests/test_models.py

73 lines
2.4 KiB
Python

"""
Unit тесты для моделей материалов.
"""
import pytest
from apps.materials.models import Material, MaterialFolder, StorageQuota
@pytest.mark.django_db
@pytest.mark.unit
class TestMaterialModel:
"""Тесты модели Material."""
def test_create_material(self, mentor_user):
"""Тест создания материала."""
material = Material.objects.create(
owner=mentor_user,
title='Учебник по математике',
description='Основы алгебры',
material_type='document',
file_name='math_textbook.pdf',
file_size=1024000 # 1 MB
)
assert material.owner == mentor_user
assert material.title == 'Учебник по математике'
assert material.material_type == 'document'
assert material.file_size == 1024000
def test_material_soft_delete(self, mentor_user):
"""Тест мягкого удаления материала."""
material = Material.objects.create(
owner=mentor_user,
title='Тест',
material_type='document'
)
material.soft_delete()
assert material.is_deleted is True
assert Material.objects.filter(id=material.id).exists() is False
assert Material.all_objects.filter(id=material.id).exists() is True
@pytest.mark.django_db
@pytest.mark.unit
class TestStorageQuotaModel:
"""Тесты модели StorageQuota."""
def test_create_storage_quota(self, mentor_user):
"""Тест создания квоты хранилища."""
quota = StorageQuota.objects.create(
user=mentor_user,
total_storage_mb=1024, # 1 GB
used_storage_mb=512
)
assert quota.user == mentor_user
assert quota.total_storage_mb == 1024
assert quota.used_storage_mb == 512
assert quota.available_storage_mb == 512
def test_quota_exceeded(self, mentor_user):
"""Тест проверки превышения квоты."""
quota = StorageQuota.objects.create(
user=mentor_user,
total_storage_mb=100,
used_storage_mb=150
)
assert quota.is_exceeded() is True
assert quota.available_storage_mb < 0