Files
t8y2--dbx/crates/dbx-core/tests/live_postgres_geometry.rs
2026-07-13 13:09:14 +08:00

30 lines
1.3 KiB
Rust

use std::time::Duration;
#[tokio::test]
#[ignore = "requires DBX_TEST_POSTGRES_GEOMETRY_URL pointing at a PostGIS database such as local-pg/test_geometry"]
async fn live_postgres_geometry_values_render_as_text_in_query_results() {
let url = std::env::var("DBX_TEST_POSTGRES_GEOMETRY_URL").expect("DBX_TEST_POSTGRES_GEOMETRY_URL");
let pool = dbx_core::db::postgres::connect(&url, Duration::from_secs(5)).await.expect("connect");
let result = dbx_core::db::postgres::execute_query(
&pool,
"select id, geom, simple_geom from public.geo_test where id in (1, 7, 8) order by id",
)
.await
.expect("query geometry rows");
assert_eq!(result.columns, vec!["id", "geom", "simple_geom"]);
assert_eq!(result.rows.len(), 3);
assert_eq!(result.rows[0][0], serde_json::json!(1));
assert_eq!(result.rows[0][1], serde_json::json!("POINT(116.397 39.908)"));
assert_eq!(result.rows[0][2], serde_json::Value::Null);
assert_eq!(result.rows[1][0], serde_json::json!(7));
assert_eq!(result.rows[1][1], serde_json::Value::Null);
assert_eq!(result.rows[1][2], serde_json::Value::Null);
assert_eq!(result.rows[2][0], serde_json::json!(8));
assert_eq!(result.rows[2][1], serde_json::Value::Null);
assert_eq!(result.rows[2][2], serde_json::json!("POINT(120 30)"));
}