UPDATE
This commit is contained in:
@@ -86,3 +86,39 @@ class RAGFailureContractTests(SimpleTestCase):
|
||||
YieldHarvestRAGService().generate_narrative({"farm_uuid": "farm-1"})
|
||||
|
||||
self.assertEqual(exc_info.exception.contract.error_code, "invalid_json")
|
||||
|
||||
|
||||
@patch("rag.services.soil_anomaly.build_ai_farm_snapshot", return_value={"farm_uuid": "farm-1"})
|
||||
def test_soil_anomaly_loads_canonical_snapshot(self, mock_snapshot):
|
||||
from rag.services.soil_anomaly import _load_farm_or_error
|
||||
|
||||
payload = _load_farm_or_error("farm-1")
|
||||
|
||||
self.assertEqual(payload["farm_uuid"], "farm-1")
|
||||
mock_snapshot.assert_called_once_with("farm-1")
|
||||
|
||||
@patch(
|
||||
"rag.services.pest_disease.build_ai_farm_snapshot",
|
||||
return_value={
|
||||
"farm_uuid": "farm-1",
|
||||
"weather": {"forecast": {"humidity_mean": 75.0, "temperature_mean": 31.0, "precipitation": 3.0}},
|
||||
"farm_metrics": {"resolved_metrics": {"soil_moisture": 66.0, "electrical_conductivity": 2.8, "soil_ph": 7.9}},
|
||||
},
|
||||
)
|
||||
def test_pest_risk_context_reads_canonical_snapshot_shape(self, mock_snapshot):
|
||||
from rag.services.pest_disease import _build_risk_context, _load_farm_or_error
|
||||
|
||||
farm_details = _load_farm_or_error("farm-1")
|
||||
risk = _build_risk_context(farm_details, plant_name=None, growth_stage=None)
|
||||
|
||||
self.assertEqual(risk["overall_risk"], "high")
|
||||
self.assertIn("EC بالا", risk["key_drivers"])
|
||||
mock_snapshot.assert_called_once_with("farm-1")
|
||||
|
||||
@patch("rag.services.pest_disease.build_ai_farm_snapshot", return_value={"farm_uuid": "farm-1"})
|
||||
def test_pest_detection_remains_image_first_with_optional_farm_context(self, mock_snapshot):
|
||||
with self.assertRaises(RAGServiceError) as exc_info:
|
||||
get_pest_disease_detection(farm_uuid="farm-1", images=[])
|
||||
|
||||
self.assertEqual(exc_info.exception.contract.error_code, "missing_images")
|
||||
mock_snapshot.assert_not_called()
|
||||
|
||||
Reference in New Issue
Block a user