UPDATE
This commit is contained in:
@@ -6,6 +6,8 @@ from unittest.mock import patch
|
||||
from django.test import TestCase, override_settings
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from rag.failure_contract import RAGServiceError
|
||||
|
||||
|
||||
@override_settings(ROOT_URLCONF="weather.urls")
|
||||
class FarmWeatherApiTests(TestCase):
|
||||
@@ -122,3 +124,29 @@ class WaterNeedPredictionApiTests(TestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(response.json()["msg"], "Farm not found.")
|
||||
|
||||
@patch("weather.views.apps.get_app_config")
|
||||
def test_water_need_api_returns_structured_failure_for_invalid_llm_json(self, mock_get_app_config):
|
||||
mock_service = SimpleNamespace(
|
||||
get_water_need_prediction=lambda **_kwargs: (_ for _ in ()).throw(
|
||||
RAGServiceError(
|
||||
error_code="invalid_json",
|
||||
message="Water need prediction LLM response was not valid JSON.",
|
||||
source="llm",
|
||||
retriable=True,
|
||||
http_status=502,
|
||||
)
|
||||
)
|
||||
)
|
||||
mock_get_app_config.return_value = SimpleNamespace(
|
||||
get_water_need_service=lambda: mock_service
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
"/water-need-prediction/",
|
||||
data={"farm_uuid": "550e8400-e29b-41d4-a716-446655440000"},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 502)
|
||||
self.assertEqual(response.json()["data"]["error_code"], "invalid_json")
|
||||
|
||||
Reference in New Issue
Block a user