mirror of
https://github.com/dataforcanada/d4c-service-geo-assistant.git
synced 2026-06-13 22:41:01 +02:00
8f0239c1c9
* Add initial NAIP fetcher * Swap to Element84's EarthSearch API for NAIP STAC search and download * clip to bounds of aoi * Swap to Element84's EarthSearch API for NAIP STAC search and download * rename bands and remove dask chunking * Add DS_Store to .gitignore * restrict date range for naip test * Adjust timerange for tests * Add xarray to pyproj * Reduce aoi size * revert test to use tmp path * Update return types for tool to ensure state gets updated * Mark naip test as xfail * Fix geom creation --------- Co-authored-by: lillythomas <lillyelizathomas@gmail.com> Co-authored-by: Daniel Wiesmann <yellowcap@users.noreply.github.com>
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from pytest import fixture
|
|
from geo_assistant.agent.state import GeoAssistantState
|
|
from geo_assistant.tools.buffer import get_search_area
|
|
from geojson_pydantic import Feature, Point
|
|
from langchain_core.tools.base import ToolCall
|
|
|
|
|
|
@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_png_path="path/to/naip.png",
|
|
)
|
|
|
|
|
|
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"
|