import json import tempfile import unittest from pathlib import Path from src.geojson_parser import parse_geojson_file class GeojsonParserTests(unittest.TestCase): def test_accepts_wgs84_polygon(self): data = { "type": "Polygon", "coordinates": [ [ [70.0, 21.0], [70.001, 21.0], [70.001, 21.001], [70.0, 21.001], [70.0, 21.0], ] ], } with tempfile.TemporaryDirectory() as tmp: path = Path(tmp) / "site.geojson" path.write_text(json.dumps(data), encoding="utf-8") selection = parse_geojson_file(path) self.assertEqual(selection.selection_type, "geojson_boundary") self.assertGreater(selection.area_sqm, 0) def test_rejects_non_wgs84_coordinates(self): data = { "type": "Polygon", "coordinates": [ [ [700000, 2100000], [700010, 2100000], [700010, 2100010], [700000, 2100010], [700000, 2100000], ] ], } with tempfile.TemporaryDirectory() as tmp: path = Path(tmp) / "site.geojson" path.write_text(json.dumps(data), encoding="utf-8") with self.assertRaisesRegex(ValueError, "WGS84"): parse_geojson_file(path) def test_rejects_malformed_root(self): with tempfile.TemporaryDirectory() as tmp: path = Path(tmp) / "site.geojson" path.write_text("[]", encoding="utf-8") with self.assertRaisesRegex(ValueError, "GeoJSON root"): parse_geojson_file(path) if __name__ == "__main__": unittest.main()