From cee89e31aa79b7a585c2169644d6cd669e356f4b Mon Sep 17 00:00:00 2001 From: Mika Bomm Date: Mon, 7 Apr 2025 13:06:34 +0200 Subject: [PATCH] Refactor database URL tests to use temp_env with multiple variables and improve clarity --- crates/backend/src/main.rs | 41 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/crates/backend/src/main.rs b/crates/backend/src/main.rs index 5eec966..e97d678 100644 --- a/crates/backend/src/main.rs +++ b/crates/backend/src/main.rs @@ -92,31 +92,31 @@ fn build_database_url() -> String { #[cfg(test)] mod tests { use super::*; - use temp_env::with_vars; + use temp_env::{with_vars, with_vars_unset}; #[test] fn build_database_url_with_defaults() { - temp_env::with_vars([("DB_HOST", None::<&str>)], || { - // Was sieht die direkte Umgebung? (Sollte Err sein) - println!( - "Inside temp_env (unset): std::env::var(\"DB_HOST\") is {:?}", - std::env::var("DB_HOST") - ); - - // Was sieht dotenvy? (Ist wahrscheinlich Ok(...) wegen .env) - println!( - "Inside temp_env (unset): dotenvy::var(\"DB_HOST\") is {:?}", - dotenvy::var("DB_HOST") - ); - - // Jetzt der Aufruf, der panicen sollte - build_database_url(); - }); + temp_env::with_vars( + [ + ("DB_USER", None::<&str>), + ("DB_NAME", None::<&str>), + ("DB_PASSWORD", None::<&str>), + ("DB_HOST", Some("localhost")), + ("DB_PORT", None::<&str>), + ], + || { + let expected_url = "postgresql://pgg:pgg@localhost:5432/pgg"; + let actual_url = build_database_url(); + assert_eq!( + actual_url, expected_url, + "Database URL should use default values for unset env vars." + ); + }, + ); } #[test] fn build_database_url_with_all_vars() { - dotenvy::dotenv().ok(); with_vars( [ ("DB_USER", Some("testuser")), @@ -139,7 +139,8 @@ mod tests { #[test] #[should_panic(expected = "DB_HOST must be set in .env")] fn build_database_url_missing_host_panics() { - dotenvy::dotenv().ok(); - build_database_url(); + with_vars_unset(["DB_HOST"], || { + build_database_url(); + }); } } -- 2.45.3