mod common;
use getquotes::logger::initialize_logger;
use std::fs;
use std::path::Path;
#[test]
fn test_initialize_logger() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let (_guard, temp_dir) = common::setup_temp_home()?;
let log_file = format!("test_logger_{}.log", std::process::id());
initialize_logger(&log_file)?;
let home = std::env::home_dir();
let expected_log_path = home.as_ref().map_or_else(
|| Path::new("").join(&log_file),
|h| Path::new(h).join(".config/getquotes").join(&log_file),
);
assert!(
expected_log_path.exists(),
"Log file was not created at expected path: {expected_log_path:?}"
);
log::error!("Test error log entry");
log::warn!("Test warning log entry");
log::info!("Test info log entry");
std::thread::sleep(std::time::Duration::from_millis(500));
log::logger().flush();
std::thread::sleep(std::time::Duration::from_millis(200));
let log_content = fs::read_to_string(&expected_log_path)?;
assert!(
!log_content.is_empty(),
"Log file is empty after logging entries"
);
std::mem::drop(temp_dir);
Ok(())
}
#[test]
fn test_initialize_logger_custom_dir() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let (_guard, _temp_dir) = common::setup_temp_home()?;
let log_file = "custom/dir/test_logger.log";
let result = initialize_logger(log_file);
assert!(result.is_err());
Ok(())
}