mirror of
https://github.com/dataforcanada/d4c-service-geo-assistant.git
synced 2026-06-13 14:31:01 +02:00
9b202c504e
* Intermediate * Fix naip geom handling * Fix imagery decoding for summary tool * Re enable xfail * Re enable xfail * Remove png references
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from geojson_pydantic import Feature, Point
|
|
from langchain_core.tools.base import ToolCall
|
|
from pytest import fixture
|
|
|
|
from geo_assistant.agent.state import GeoAssistantState
|
|
from geo_assistant.tools.buffer import get_search_area
|
|
|
|
|
|
@fixture
|
|
def geo_assistant_fixture():
|
|
place_geojson = Feature(
|
|
type="Feature",
|
|
geometry=Point(type="Point", coordinates=[-9.1393, 38.7223]),
|
|
properties={"name": "Neighbourhood Cafe Lisbon"},
|
|
)
|
|
return GeoAssistantState(
|
|
place=place_geojson,
|
|
search_area=None,
|
|
messages=[],
|
|
naip_img_bytes=None,
|
|
)
|
|
|
|
|
|
async def test_get_search_area(geo_assistant_fixture):
|
|
# Call the underlying function directly to test the logic
|
|
# This bypasses the injection framework which is better suited for integration tests
|
|
command = await get_search_area.ainvoke(
|
|
ToolCall(
|
|
name="get_search_area",
|
|
type="tool_call",
|
|
id="test_id_search_area",
|
|
args={
|
|
"buffer_size_km": 10.0,
|
|
"state": geo_assistant_fixture,
|
|
"tool_call_id": "test_id_search_area",
|
|
},
|
|
),
|
|
)
|
|
|
|
# Verify the state was used correctly
|
|
assert "search_area" in command.update
|
|
assert "messages" in command.update
|
|
|
|
# Verify the buffer was created around the correct place
|
|
search_area = command.update["search_area"]
|
|
assert search_area.geometry.type == "Polygon"
|