"""Tests for exchange package admin upload flow.""" from __future__ import annotations from django.test import TestCase from django.urls import reverse from apps.exchange.models import ExchangeDeliveryChannel, ExchangePackageImport from apps.organization.models import Organization from tests.apps.exchange.test_api import build_exchange_archive, build_exchange_payload from tests.apps.user.factories import UserFactory class ExchangePackageAdminTest(TestCase): """Verify manual package import entrypoints in Django admin.""" def setUp(self): self.superuser = UserFactory.create_superuser() self.client.force_login(self.superuser) self.upload_url = reverse("admin:exchange_exchangepackageimport_upload_package") self.changelist_url = reverse("admin:exchange_exchangepackageimport_changelist") def test_upload_package_view_imports_exchange_archive(self): archive = build_exchange_archive( package_id="pkg-admin-001", data=build_exchange_payload(), ) response = self.client.post( self.upload_url, {"file": archive}, follow=True, ) self.assertRedirects(response, self.changelist_url) self.assertContains(response, "Импорт пакета обмена завершён") imported = ExchangePackageImport.objects.get(package_id="pkg-admin-001") self.assertEqual(imported.delivery_channel, ExchangeDeliveryChannel.ADMIN) self.assertEqual(imported.imported_by, self.superuser) self.assertEqual(Organization.objects.count(), 2) def test_admin_dashboard_contains_exchange_action(self): response = self.client.get(reverse("admin:index")) self.assertEqual(response.status_code, 200) self.assertContains(response, "Обмен данными") self.assertContains(response, self.upload_url)