use crate::config;
use crate::config::Config;
use reedline::Reedline;
pub(crate) fn create_session_id(config: &Config) -> Option<reedline::HistorySessionId> {
if config.history.disabled {
return None;
}
if config.history.dir.is_none() && config::history_dir().is_none() {
return None;
}
Reedline::create_history_session_id()
}
#[cfg(test)]
mod session_id_tests {
use super::*;
#[test]
fn test_create_session_id_when_history_enabled() {
let mut config = Config::default();
config.history.dir = Some(std::env::temp_dir());
assert!(!config.history.disabled);
let id = create_session_id(&config);
assert!(
id.is_some(),
"should generate session ID when history is enabled"
);
}
#[test]
fn test_create_session_id_when_history_disabled() {
let mut config = Config::default();
config.history.disabled = true;
let id = create_session_id(&config);
assert!(id.is_none(), "should be None when history is disabled");
}
#[test]
fn test_create_session_id_respects_default_history_dir() {
let config = Config::default();
assert!(!config.history.disabled);
assert!(config.history.dir.is_none());
let id = create_session_id(&config);
assert_eq!(id.is_some(), config::history_dir().is_some());
}
}