Добавлены тесты защиты системного клиента и рефакторинг структуры тестов
- Создан новый класс SystemCustomerProtectionTestCase с 5 критичными тестами - Тест создания системного клиента с правильными атрибутами - Тест защиты от удаления системного клиента (ValidationError) - Тест защиты email системного клиента от изменения - Тест защиты флага is_system_customer от изменения - Тест что обычные клиенты не затронуты защитой - Исправлена логика в Customer.save(): проверка теперь использует original.is_system_customer - Добавлен импорт ValidationError из django.core.exceptions - Рефакторинг структуры тестов customers: - Разделены тесты по отдельным модулям в папке customers/tests/ - test_search_strategies.py - тесты стратегий поиска - test_system_customer.py - тесты защиты системного клиента - test_wallet_balance.py - тесты баланса кошелька - test_wallet_service.py - тесты WalletService - test_wallet_model.py - тесты модели WalletTransaction - Обновлён анализ тестов: 50 тестов (было 45), все проходят успешно - Критичная функциональность POS системы теперь покрыта тестами - Учтена tenant-система (используется TenantTestCase)
This commit is contained in:
@@ -128,15 +128,17 @@ class Customer(models.Model):
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# Защита системного клиента от изменений
|
||||
if self.pk and self.is_system_customer:
|
||||
if self.pk:
|
||||
# Получаем оригинальный объект из БД
|
||||
try:
|
||||
original = Customer.objects.get(pk=self.pk)
|
||||
# Проверяем, не пытаются ли изменить критичные поля
|
||||
if original.email != self.email:
|
||||
raise ValidationError("Нельзя изменить email системного клиента")
|
||||
if original.is_system_customer != self.is_system_customer:
|
||||
raise ValidationError("Нельзя изменить флаг системного клиента")
|
||||
# Проверяем, что это системный клиент в БД
|
||||
if original.is_system_customer:
|
||||
# Проверяем, не пытаются ли изменить критичные поля
|
||||
if original.email != self.email:
|
||||
raise ValidationError("Нельзя изменить email системного клиента")
|
||||
if original.is_system_customer != self.is_system_customer:
|
||||
raise ValidationError("Нельзя изменить флаг системного клиента")
|
||||
except Customer.DoesNotExist:
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user