From 853d64328e90d773abb50b41cc397dd07c13522d Mon Sep 17 00:00:00 2001 From: stumpylog <797416+stumpylog@users.noreply.github.com> Date: Fri, 30 Oct 2026 11:04:14 -0700 Subject: [PATCH] Fix: report no unapplied migrations when the applied migrations cannot be read --- src/documents/tests/test_api_status.py | 22 ++++++++++++++++++++++ src/documents/views.py | 1 + 2 files changed, 23 insertions(+) diff --git a/src/documents/tests/test_api_status.py b/src/documents/tests/test_api_status.py index a8a21a28c..2e458fa80 100644 --- a/src/documents/tests/test_api_status.py +++ b/src/documents/tests/test_api_status.py @@ -564,3 +564,25 @@ class TestSystemStatus(APITestCase): database["migration_status"], {"latest_migration": None, "unapplied_migrations": []}, ) + + def test_system_status_migration_query_error(self) -> None: + """ + GIVEN: + - The migration graph loads but reading the applied migrations fails + WHEN: + - The system status is requested + THEN: + - No migrations are reported as unapplied, since the state is unknown + """ + self.client.force_login(self.user) + with mock.patch("documents.views.MigrationRecorder") as recorder: + recorder.Migration.objects.all.side_effect = Exception("query failed") + response = self.client.get(self.ENDPOINT) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + database = response.data["database"] + self.assertEqual(database["status"], "ERROR") + self.assertEqual( + database["migration_status"], + {"latest_migration": None, "unapplied_migrations": []}, + ) diff --git a/src/documents/views.py b/src/documents/views.py index 5508fb634..f854762a2 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -5357,6 +5357,7 @@ class SystemStatusView(PassUserMixin): for m in MigrationRecorder.Migration.objects.all().order_by("id") ] except Exception as e: + all_migrations = [] applied_migrations = [] db_status = "ERROR" logger.exception(