def test_cli_add_geometry_column_options(tmpdir): # create a rowid table with one column db_path = tmpdir / "spatial.db" db = Database(str(db_path)) db.init_spatialite() table = db["locations"].create({"name": str}) result = CliRunner().invoke( cli, [ "add-geometry-column", str(db_path), table.name, "geometry", "-t", "POLYGON", "--srid", "3857", # https://epsg.io/3857 "--not-null", ], ) assert 0 == result.exit_code assert db["geometry_columns"].get(["locations", "geometry"]) == { "f_table_name": "locations", "f_geometry_column": "geometry", "geometry_type": 3, # polygon "coord_dimension": 2, "srid": 3857, "spatial_index_enabled": 0, } column = table.columns[1] assert column.notnull
def test_cli_add_geometry_column(tmpdir): # create a rowid table with one column db_path = tmpdir / "spatial.db" db = Database(str(db_path)) db.init_spatialite() table = db["locations"].create({"name": str}) result = CliRunner().invoke( cli, [ "add-geometry-column", str(db_path), table.name, "geometry", "--type", "POINT", ], ) assert 0 == result.exit_code assert db["geometry_columns"].get(["locations", "geometry"]) == { "f_table_name": "locations", "f_geometry_column": "geometry", "geometry_type": 1, # point "coord_dimension": 2, "srid": 4326, "spatial_index_enabled": 0, }
def test_double_create_spatial_index(): db = Database(memory=True) spatialite = find_spatialite() db.init_spatialite(spatialite) # create a table, add a geometry column with default values table = db.create_table("locations", {"id": str, "properties": str}) table.add_geometry_column("geometry", "Point") # index it, return True assert table.create_spatial_index("geometry") assert "idx_locations_geometry" in db.table_names() # call it again, return False assert not table.create_spatial_index("geometry")
def test_cli_create_spatial_index(tmpdir): # create a rowid table with one column db_path = tmpdir / "spatial.db" db = Database(str(db_path)) db.init_spatialite() table = db["locations"].create({"name": str}) table.add_geometry_column("geometry", "POINT") result = CliRunner().invoke( cli, ["create-spatial-index", str(db_path), table.name, "geometry"]) assert 0 == result.exit_code assert "idx_locations_geometry" in db.table_names()
def test_cli_add_geometry_column_invalid_type(tmpdir): # create a rowid table with one column db_path = tmpdir / "spatial.db" db = Database(str(db_path)) db.init_spatialite() table = db["locations"].create({"name": str}) result = CliRunner().invoke( cli, [ "add-geometry-column", str(db_path), table.name, "geometry", "--type", "NOT-A-TYPE", ], ) assert 2 == result.exit_code
def test_add_geometry_column(): db = Database(memory=True) spatialite = find_spatialite() db.init_spatialite(spatialite) # create a table first table = db.create_table("locations", {"id": str, "properties": str}) table.add_geometry_column( column_name="geometry", geometry_type="Point", srid=4326, coord_dimension=2, ) assert db["geometry_columns"].get(["locations", "geometry"]) == { "f_table_name": "locations", "f_geometry_column": "geometry", "geometry_type": 1, # point "coord_dimension": 2, "srid": 4326, "spatial_index_enabled": 0, }
def test_init_spatialite(): db = Database(memory=True) spatialite = find_spatialite() db.init_spatialite(spatialite) assert "spatial_ref_sys" in db.table_names()