diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-31 11:20:39 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-31 11:20:39 -0500 |
commit | aa6d050b09dfbf3e5be112325e8e8d8a1f4dacf9 (patch) | |
tree | efa23a0c20bcfb08f2fba1ee4823ac20d2381b21 | |
parent | 2dd295a7437f80d1beba11ddb9881f9dd3609006 (diff) |
Add barebones db testing
-rw-r--r-- | server/tests/common/mod.rs | 36 | ||||
-rw-r--r-- | server/tests/db_test.rs | 14 |
2 files changed, 50 insertions, 0 deletions
diff --git a/server/tests/common/mod.rs b/server/tests/common/mod.rs new file mode 100644 index 0000000..e907306 --- /dev/null +++ b/server/tests/common/mod.rs @@ -0,0 +1,36 @@ +use std::env; + +use env_logger::Env; +use sqlx::{PgPool, postgres::PgPoolOptions}; + +pub fn test_setup() { + dotenv::dotenv().ok(); + let _ = env_logger::Builder::from_env( + Env::default().default_filter_or("info"), + ) + .is_test(true) + .try_init(); +} + +pub struct TestDb { + db_pool: PgPool, +} + +impl TestDb { + pub async fn new() -> Self { + test_setup(); + let db_url = env::var("DATABASE_URL").expect("DATABASE_URL"); + let db_pool = PgPoolOptions::new() + .max_connections(10) + .connect(&db_url) + .await + .expect("db connection"); + Self { + db_pool + } + } + + pub fn db(&self) -> PgPool { + self.db_pool.clone() + } +} diff --git a/server/tests/db_test.rs b/server/tests/db_test.rs new file mode 100644 index 0000000..6acc21e --- /dev/null +++ b/server/tests/db_test.rs @@ -0,0 +1,14 @@ +use sqlx::Row; +use tracing::info; + +mod common; + +#[tokio::test] +#[ignore] +async fn basic_db_query() -> Result<(), anyhow::Error> { + let db = common::TestDb::new().await; + let db = db.db(); + let number = sqlx::query!(r#"select 1 + 1 as number"#).fetch_one(&db).await?; + assert_eq!(number.number, Some(2)); + Ok(()) +} |