use rust_ef::provider::IDatabaseProvider;
use rust_ef_sqlite::SqliteProvider;
#[tokio::test]
async fn test_sqlite_wal_mode_enabled() {
let path = std::env::temp_dir().join(format!("rust_ef_wal_test_{}.db", std::process::id()));
let _ = std::fs::remove_file(&path);
let _ = std::fs::remove_file(path.with_extension("db-wal"));
let _ = std::fs::remove_file(path.with_extension("db-shm"));
let mode = {
let provider = SqliteProvider::new(&path).expect("create sqlite provider");
let mut conn = provider.get_connection().await.expect("get connection");
let rows = conn
.query("PRAGMA journal_mode", &[])
.await
.expect("pragma");
assert!(!rows.is_empty(), "PRAGMA journal_mode should return a row");
String::try_from(rows[0][0].clone()).unwrap().to_lowercase()
};
assert_eq!(
mode, "wal",
"SQLite journal_mode should be wal (set by SqliteProvider::new), got: {}",
mode
);
let _ = std::fs::remove_file(&path);
let _ = std::fs::remove_file(path.with_extension("db-wal"));
let _ = std::fs::remove_file(path.with_extension("db-shm"));
}
#[tokio::test]
async fn test_sqlite_busy_timeout_set() {
let path = std::env::temp_dir().join(format!("rust_ef_busy_test_{}.db", std::process::id()));
let _ = std::fs::remove_file(&path);
let _ = std::fs::remove_file(path.with_extension("db-wal"));
let _ = std::fs::remove_file(path.with_extension("db-shm"));
let timeout = {
let provider = SqliteProvider::new(&path).expect("create sqlite provider");
let mut conn = provider.get_connection().await.expect("get connection");
let rows = conn
.query("PRAGMA busy_timeout", &[])
.await
.expect("pragma");
assert!(!rows.is_empty(), "PRAGMA busy_timeout should return a row");
i64::try_from(rows[0][0].clone()).expect("busy_timeout should be numeric")
};
assert!(
timeout >= 5000,
"busy_timeout should be >= 5000ms (set by SqliteProvider::new), got: {}",
timeout
);
let _ = std::fs::remove_file(&path);
let _ = std::fs::remove_file(path.with_extension("db-wal"));
let _ = std::fs::remove_file(path.with_extension("db-shm"));
}
#[test]
fn test_postgres_pool_size_api_exists() {
use rust_ef_postgres::DbContextOptionsBuilderExt;
let _new = rust_ef_postgres::PostgresProvider::new;
let _with_pool =
<rust_ef::db_context::DbContextOptionsBuilder as DbContextOptionsBuilderExt>::use_postgres_with_pool;
}
#[test]
fn test_mysql_pool_options_api_exists() {
use rust_ef_mysql::DbContextOptionsBuilderExt;
let _with_pool =
<rust_ef::db_context::DbContextOptionsBuilder as DbContextOptionsBuilderExt>::use_mysql_with_pool;
}