Files
ACORE/core/tests_cleanup.py
lokses e885e2924b core: команда авто-очистки (cleanup)
manage.py cleanup [--days N] [--dry-run] — удаляет устаревшие журналы
синхронизации (AD/Carbonio/Nextcloud/Mattermost), просроченные инвайты
паролей и истёкшие сессии. Бизнес-данные не трогает. Срок хранения —
settings.CLEANUP_LOG_RETENTION_DAYS (default 90, env-override). Запуск по cron.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-16 16:44:25 +03:00

41 lines
1.5 KiB
Python

"""Тесты команды авто-очистки (manage.py cleanup)."""
from datetime import timedelta
from io import StringIO
from django.core.management import call_command
from django.test import TestCase
from django.utils import timezone
from apps.employees.models import Employee
from apps.mattermost_connector.models import MattermostSyncLog
class CleanupCommandTests(TestCase):
def setUp(self):
self.emp = Employee.objects.create(
username='u1', email='u1@example.com',
hire_date=timezone.now().date(),
)
def _log(self, days_ago):
log = MattermostSyncLog.objects.create(
employee=self.emp, action='add_team', status='success', message='t',
)
# created_at = auto_now_add; сдвигаем принудительно
MattermostSyncLog.objects.filter(pk=log.pk).update(
created_at=timezone.now() - timedelta(days=days_ago)
)
return log
def test_deletes_old_keeps_recent(self):
old = self._log(120)
recent = self._log(10)
call_command('cleanup', '--days', '90', stdout=StringIO())
self.assertFalse(MattermostSyncLog.objects.filter(pk=old.pk).exists())
self.assertTrue(MattermostSyncLog.objects.filter(pk=recent.pk).exists())
def test_dry_run_deletes_nothing(self):
self._log(200)
call_command('cleanup', '--days', '90', '--dry-run', stdout=StringIO())
self.assertEqual(MattermostSyncLog.objects.count(), 1)