use tork_orm_core::Database;
#[tokio::test]
async fn in_memory_data_survives_a_dropped_pinned_handle() {
let db = Database::connect(":memory:", 1).await.unwrap();
db.execute(
"CREATE TABLE notes (id INTEGER PRIMARY KEY, body TEXT NOT NULL)".into(),
vec![],
)
.await
.unwrap();
db.execute(
"INSERT INTO notes VALUES (1, 'hello')".into(),
vec![],
)
.await
.unwrap();
let rows = db
.fetch_all("SELECT body FROM notes WHERE id = 1".into(), vec![])
.await
.unwrap();
let body: String = rows[0].get("body").unwrap();
assert_eq!(body, "hello");
db.close().await;
let result = db
.fetch_all("SELECT body FROM notes WHERE id = 1".into(), vec![])
.await;
assert!(result.is_err(), "in-memory data must not survive pool close");
}
#[tokio::test]
async fn in_memory_pool_clamps_to_one_connection() {
let db = Database::connect(":memory:", 8).await.unwrap();
db.execute(
"CREATE TABLE counters (n INTEGER NOT NULL)".into(),
vec![],
)
.await
.unwrap();
db.execute("INSERT INTO counters VALUES (1)".into(), vec![])
.await
.unwrap();
let n: i64 = db
.fetch_all("SELECT n FROM counters".into(), vec![])
.await
.unwrap()[0]
.get("n")
.unwrap();
assert_eq!(n, 1);
}