feat(admin): improve uploads and dashboard UX
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""Tests for registers admin configuration."""
|
||||
|
||||
import io
|
||||
from unittest.mock import patch
|
||||
|
||||
from apps.registers.admin import RegisterUploadAdmin
|
||||
from apps.registers.models import Organization, RegisterUpload, RegistryMembershipPeriod
|
||||
@@ -45,6 +46,13 @@ class RegistersAdminTest(TestCase):
|
||||
self.factory = RequestFactory()
|
||||
self.user = UserFactory.create_superuser()
|
||||
|
||||
def _request(self):
|
||||
request = self.factory.get("/admin/registers/registerupload/upload-excel/")
|
||||
request.user = self.user
|
||||
request.session = {}
|
||||
request._messages = FallbackStorage(request)
|
||||
return request
|
||||
|
||||
def _post_request(self, data):
|
||||
request = self.factory.post(
|
||||
"/admin/registers/registerupload/upload-excel/",
|
||||
@@ -61,6 +69,16 @@ class RegistersAdminTest(TestCase):
|
||||
|
||||
self.assertIn("registers_registerupload_upload_excel", route_names)
|
||||
|
||||
def test_register_upload_admin_get_renders_custom_file_picker(self):
|
||||
admin = RegisterUploadAdmin(RegisterUpload, self.site)
|
||||
response = admin.upload_excel_view(self._request())
|
||||
response.render()
|
||||
content = response.content.decode("utf-8")
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('type="file"', content)
|
||||
self.assertIn("mx-upload-file", content)
|
||||
|
||||
def test_register_upload_admin_upload_excel_success(self):
|
||||
admin = RegisterUploadAdmin(RegisterUpload, self.site)
|
||||
registry = RegisterFactory()
|
||||
@@ -100,3 +118,29 @@ class RegistersAdminTest(TestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(RegisterUpload.objects.count(), 0)
|
||||
|
||||
def test_register_upload_admin_uses_sync_import_service(self):
|
||||
admin = RegisterUploadAdmin(RegisterUpload, self.site)
|
||||
registry = RegisterFactory()
|
||||
uploaded_file = _build_register_excel_upload()
|
||||
request = self._post_request(
|
||||
{
|
||||
"registry": str(registry.id),
|
||||
"actual_date": "2026-03-20",
|
||||
"file": uploaded_file,
|
||||
}
|
||||
)
|
||||
|
||||
with patch(
|
||||
"apps.registers.admin.RegisterImportService.sync_registry_memberships",
|
||||
return_value={
|
||||
"registry_name": registry.name,
|
||||
"rows_in_file": 1,
|
||||
"organizations_created": 1,
|
||||
"organizations_updated": 0,
|
||||
},
|
||||
) as sync_mock:
|
||||
response = admin.upload_excel_view(request)
|
||||
|
||||
self.assertEqual(response.status_code, 302)
|
||||
sync_mock.assert_called_once()
|
||||
|
||||
Reference in New Issue
Block a user