"""Тесты команды авто-очистки (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)