feat(admin): expand exchange admin and unify admin UX
Some checks failed
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m39s
CI/CD Pipeline / Run Tests (pull_request) Successful in 3m0s
CI/CD Pipeline / Run API Inventory E2E Tests (pull_request) Successful in 35s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped

This commit is contained in:
2026-03-24 13:58:24 +01:00
parent 559b9bc5ef
commit c98ba76081
33 changed files with 2915 additions and 209 deletions

View File

@@ -46,8 +46,8 @@ class RegistersAdminTest(TestCase):
self.factory = RequestFactory()
self.user = UserFactory.create_superuser()
def _request(self):
request = self.factory.get("/admin/registers/registerupload/upload-excel/")
def _request(self, path="/admin/registers/registerupload/upload-excel/"):
request = self.factory.get(path)
request.user = self.user
request.session = {}
request._messages = FallbackStorage(request)
@@ -78,6 +78,20 @@ class RegistersAdminTest(TestCase):
self.assertEqual(response.status_code, 200)
self.assertIn('type="file"', content)
self.assertIn("mx-upload-file", content)
self.assertIn("multiple", content)
def test_register_upload_changelist_renders_toolbar_buttons(self):
admin = RegisterUploadAdmin(RegisterUpload, self.site)
response = admin.changelist_view(
self._request("/admin/registers/registerupload/")
)
response.render()
content = response.content.decode("utf-8")
self.assertEqual(response.status_code, 200)
self.assertIn("Загрузить справочники из Excel", content)
self.assertIn("Добавить загрузку реестра", content)
self.assertIn("mx-admin-action-bar", content)
def test_register_upload_admin_upload_excel_success(self):
admin = RegisterUploadAdmin(RegisterUpload, self.site)
@@ -144,3 +158,38 @@ class RegistersAdminTest(TestCase):
self.assertEqual(response.status_code, 302)
sync_mock.assert_called_once()
def test_register_upload_admin_processes_multiple_files(self):
admin = RegisterUploadAdmin(RegisterUpload, self.site)
registry = RegisterFactory()
first_upload = _build_register_excel_upload("registry_1.xlsx")
second_upload = _build_register_excel_upload("registry_2.xlsx")
request = self._post_request(
{
"registry": str(registry.id),
"actual_date": "2026-03-20",
"files": [first_upload, second_upload],
}
)
with patch(
"apps.registers.admin.RegisterImportService.sync_registry_memberships",
side_effect=[
{
"registry_name": registry.name,
"rows_in_file": 1,
"organizations_created": 1,
"organizations_updated": 0,
},
{
"registry_name": registry.name,
"rows_in_file": 1,
"organizations_created": 0,
"organizations_updated": 1,
},
],
) as sync_mock:
response = admin.upload_excel_view(request)
self.assertEqual(response.status_code, 302)
self.assertEqual(sync_mock.call_count, 2)