summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-12-31 11:20:39 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-12-31 11:20:39 -0500
commitaa6d050b09dfbf3e5be112325e8e8d8a1f4dacf9 (patch)
treeefa23a0c20bcfb08f2fba1ee4823ac20d2381b21
parent2dd295a7437f80d1beba11ddb9881f9dd3609006 (diff)
Add barebones db testing
-rw-r--r--server/tests/common/mod.rs36
-rw-r--r--server/tests/db_test.rs14
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(())
+}