Добавлены тесты для Environment

This commit is contained in:
2026-07-23 16:49:31 +03:00
parent 7f25095014
commit abd999d245
8 changed files with 945 additions and 3 deletions

View File

@@ -0,0 +1,103 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание mock-классов для тестов ModelUtils
"""
from django.db import models
from django.db.models import Model
class TestSampleModel(Model):
"""
Вспомогательный mock-класс модели для тестирования методов ModelUtils.
Предназначен для сценариев, где data является экземпляром модели.
Имитирует базовую модель Django с полями id, name и description.
"""
class Meta:
app_label = "test_app"
managed = False
id = models.IntegerField(primary_key=True, default=1)
name = models.CharField(max_length=100, default="test_name")
description = models.CharField(max_length=255, default="test_description")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class TestEmptyModel(Model):
"""
Вспомогательный mock-класс пустой модели для тестирования граничных случаев.
Предназначен для сценариев, где модель не содержит полей.
"""
class Meta:
app_label = "test_app"
managed = False
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class TestModelWithExtraFields(Model):
"""
Вспомогательный mock-класс модели с дополнительными полями.
Предназначен для сценариев, где необходимо проверить работу с полями,
которые могут отсутствовать в целевом словаре.
"""
class Meta:
app_label = "test_app"
managed = False
id = models.IntegerField(primary_key=True, default=1)
name = models.CharField(max_length=100, default="test_name")
email = models.EmailField(max_length=255, default="test@example.com")
is_active = models.BooleanField(default=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class TestModelWithSpecialFields(Model):
"""
Вспомогательный mock-класс модели с полями специальных типов.
Предназначен для проверки корректной обработки полей с None значениями
и полей, которые могут быть не установлены.
"""
class Meta:
app_label = "test_app"
managed = False
id = models.IntegerField(primary_key=True, default=1)
nullable_field = models.CharField(max_length=100, null=True, blank=True, default=None)
boolean_field = models.BooleanField(default=False)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class TestModelWithDifferentFieldTypes(Model):
"""
Вспомогательный mock-класс модели с полями различных типов.
Предназначен для проверки корректной обработки разнотипных полей.
"""
class Meta:
app_label = "test_app"
managed = False
id = models.IntegerField(primary_key=True, default=1)
integer_field = models.IntegerField(default=0)
float_field = models.FloatField(default=0.0)
text_field = models.TextField(default="")
boolean_field = models.BooleanField(default=False)
date_field = models.DateField(null=True, blank=True)
datetime_field = models.DateTimeField(null=True, blank=True)