def test_encode_metadata(): metadata = {"a": "b"} expected = b'{"a": "b"}' assert _encode_metadata(metadata) == expected
# use pyarrow.parquet write_table (no geo metadata, but also no pandas metadata) pq.write_table(table, filename) # missing metadata will raise ValueError with pytest.raises( ValueError, match="Missing geo metadata in Parquet/Feather file." ): read_parquet(filename) @pytest.mark.parametrize( "geo_meta,error", [ ({"geo": b""}, "Missing or malformed geo metadata in Parquet/Feather file"), ( {"geo": _encode_metadata({})}, "Missing or malformed geo metadata in Parquet/Feather file", ), ( {"geo": _encode_metadata({"foo": "bar"})}, "'geo' metadata in Parquet/Feather file is missing required key", ), ], ) def test_parquet_invalid_metadata(tmpdir, geo_meta, error): """Has geo metadata with missing required fields will raise a ValueError. This requires writing the parquet file directly below, so that we can control the metadata that is written for this test. """