This commit is contained in:
2026-05-05 21:02:12 +03:30
parent 5301071df5
commit 1679825ae2
47 changed files with 1347 additions and 1403 deletions
+28
View File
@@ -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")