From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 30 Apr 2025 05:16:04 +0000 (-0700) Subject: Cover llmindex in system status X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6d8cd6547931b5909022e5856781281aee552e3;p=thirdparty%2Fpaperless-ngx.git Cover llmindex in system status --- diff --git a/src/documents/tests/test_api_status.py b/src/documents/tests/test_api_status.py index 9b7bf37ad..1700366d8 100644 --- a/src/documents/tests/test_api_status.py +++ b/src/documents/tests/test_api_status.py @@ -310,3 +310,69 @@ class TestSystemStatus(APITestCase): "ERROR", ) self.assertIsNotNone(response.data["tasks"]["sanity_check_error"]) + + def test_system_status_ai_disabled(self): + """ + GIVEN: + - The AI feature is disabled + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=False): + self.client.force_login(self.user) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "DISABLED") + self.assertIsNone(response.data["tasks"]["llmindex_error"]) + + def test_system_status_ai_enabled(self): + """ + GIVEN: + - The AI index feature is enabled, but no tasks are found + - The AI index feature is enabled and a task is found + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="openai"): + self.client.force_login(self.user) + + # No tasks found + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "WARNING") + + PaperlessTask.objects.create( + type=PaperlessTask.TaskType.SCHEDULED_TASK, + status=states.SUCCESS, + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + ) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "OK") + self.assertIsNone(response.data["tasks"]["llmindex_error"]) + + def test_system_status_ai_error(self): + """ + GIVEN: + - The AI index feature is enabled and a task is found with an error + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="openai"): + PaperlessTask.objects.create( + type=PaperlessTask.TaskType.SCHEDULED_TASK, + status=states.FAILURE, + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + result="AI index update failed", + ) + self.client.force_login(self.user) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "ERROR") + self.assertIsNotNone(response.data["tasks"]["llmindex_error"]) diff --git a/src/documents/views.py b/src/documents/views.py index 2e8ca85c5..005926276 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -2976,7 +2976,7 @@ class SystemStatusView(PassUserMixin): ) ai_config = AIConfig() - if not ai_config.llm_index_enabled: + if not ai_config.llm_index_enabled(): llmindex_status = "DISABLED" llmindex_error = None llmindex_last_modified = None