UPDATE
This commit is contained in:
@@ -385,3 +385,47 @@ class RecommendationServiceDefaultsTests(TestCase):
|
||||
|
||||
self.assertEqual(result["data"]["primary_recommendation"]["npk_ratio"]["label"], "20-20-20")
|
||||
self.assertEqual(result["data"]["primary_recommendation"]["dosage"]["base_amount_per_hectare"], 65.0)
|
||||
|
||||
|
||||
class RecommendationCanonicalSnapshotTests(TestCase):
|
||||
@patch("rag.services.irrigation.get_chat_client")
|
||||
@patch("rag.services.irrigation.build_rag_context", return_value="")
|
||||
@patch("rag.services.irrigation.build_ai_farm_snapshot")
|
||||
def test_irrigation_ui_payload_uses_aggregated_snapshot_metrics(self, mock_snapshot, _mock_context, mock_client):
|
||||
from rag.services.irrigation import _build_irrigation_ui_payload
|
||||
|
||||
mock_snapshot.return_value = {"farm_metrics": {"resolved_metrics": {"soil_moisture": 44.0}}}
|
||||
payload = _build_irrigation_ui_payload(
|
||||
llm_result={"plan": {}, "timeline": [], "sections": []},
|
||||
optimizer_result=None,
|
||||
daily_water_needs=[],
|
||||
crop_profile={},
|
||||
active_kc=0.9,
|
||||
irrigation_method=None,
|
||||
ai_snapshot=mock_snapshot.return_value,
|
||||
)
|
||||
|
||||
self.assertEqual(payload["plan"]["moistureLevel"], 44)
|
||||
|
||||
@patch("rag.services.fertilization._get_optimizer")
|
||||
@patch("rag.services.fertilization.get_chat_client")
|
||||
@patch("rag.services.fertilization.build_rag_context", return_value="")
|
||||
@patch("rag.services.fertilization.build_ai_farm_snapshot")
|
||||
def test_fertilization_recommendation_includes_snapshot_provenance(self, mock_snapshot, _mock_context, mock_client, mock_optimizer):
|
||||
from rag.services.fertilization import get_fertilization_recommendation
|
||||
|
||||
client = mock_client.return_value
|
||||
client.chat.completions.create.return_value = type("Resp", (), {"choices": [type("Choice", (), {"message": type("Msg", (), {"content": '{"status": "success", "data": {}}'})()})()]})()
|
||||
mock_snapshot.return_value = {
|
||||
"source_metadata": {
|
||||
"farm_metrics": {"canonical_source": "farmer_block_aggregated_snapshot"},
|
||||
}
|
||||
}
|
||||
mock_optimizer.return_value.optimize_fertilization.return_value = None
|
||||
|
||||
with patch("rag.services.fertilization.SensorData.objects.select_related") as mock_select:
|
||||
mock_select.return_value.prefetch_related.return_value.filter.return_value.first.return_value = None
|
||||
result = get_fertilization_recommendation(farm_uuid="farm-1")
|
||||
|
||||
self.assertEqual(result["source_metadata"]["farm_metrics"]["canonical_source"], "farmer_block_aggregated_snapshot")
|
||||
self.assertEqual(result["source_metadata"]["weather"]["policy"], "center_location_latest_forecast")
|
||||
|
||||
Reference in New Issue
Block a user