site-intelligence-studio / tests /test_app_defaults.py
Eishaan's picture
Support polygon-only analysis flow
338ebb6
Raw
History Blame Contribute Delete
2.71 kB
import unittest
from app import _resolve_project_fields
from src.models import SiteSelection
class AppDefaultTests(unittest.TestCase):
def test_polygon_only_metadata_is_auto_labelled(self):
selection = SiteSelection(
id="S1",
selection_type="drawn_polygon",
coordinate_mode="wgs84",
geometry_geojson={"type": "Polygon", "coordinates": []},
local_geometry=None,
anchor_lat=21.00248,
anchor_lon=70.24537,
radius_m=None,
area_sqm=11978,
perimeter_m=439,
centroid=(21.00248, 70.24537),
bbox=(70.2447, 21.0019, 70.246, 21.003),
unit_source="WGS84 drawn map",
accuracy_label="user-drawn approximate boundary",
source_files=[],
selected_boundary_id=None,
limitations=["Drawn map boundaries are approximate."],
)
project, site, project_type, source, warnings = _resolve_project_fields(
project_name="",
site_name="",
project_type="",
boundary_source="",
selection=selection,
site_identity={"city": "Chorwad", "state": "Gujarat", "country": "India"},
)
self.assertEqual(project, "Preliminary Site Analysis")
self.assertEqual(site, "Chorwad selected site")
self.assertEqual(project_type, "Early-stage architecture site analysis")
self.assertIn("User-drawn boundary", source)
self.assertGreaterEqual(len(warnings), 3)
def test_default_untitled_site_is_replaced(self):
selection = SiteSelection(
id="S2",
selection_type="pin_radius",
coordinate_mode="wgs84",
geometry_geojson=None,
local_geometry=None,
anchor_lat=21.0,
anchor_lon=70.0,
radius_m=250,
area_sqm=196349.5,
perimeter_m=1570.8,
centroid=(21.0, 70.0),
bbox=None,
unit_source="meters",
accuracy_label="pin-radius approximation",
source_files=[],
selected_boundary_id=None,
limitations=["This is approximate context analysis."],
)
_, site, _, source, _ = _resolve_project_fields(
project_name="Architecture Site Analysis",
site_name="Untitled site",
project_type="",
boundary_source="",
selection=selection,
site_identity=None,
)
self.assertEqual(site, "Selected site 21.00000, 70.00000")
self.assertIn("pin and radius", source)
if __name__ == "__main__":
unittest.main()