73 lines
2.4 KiB
Python
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
|
|
|