use serde::Deserialize;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(default)]
pub struct AdminConfig {
pub address: Option<String>,
pub verbose: bool,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn defaults_are_none_and_false() {
let admin = AdminConfig::default();
assert!(admin.address.is_none(), "address should default to None");
assert!(!admin.verbose, "verbose should default to false");
}
#[test]
fn parse_full_config() {
let admin: AdminConfig = serde_yaml::from_str(
r#"
address: "127.0.0.1:9901"
verbose: true
"#,
)
.unwrap();
assert_eq!(
admin.address.as_deref(),
Some("127.0.0.1:9901"),
"address should be parsed"
);
assert!(admin.verbose, "verbose should be true");
}
#[test]
fn parse_empty_yields_defaults() {
let admin: AdminConfig = serde_yaml::from_str("{}").unwrap();
assert!(admin.address.is_none(), "address should default to None");
assert!(!admin.verbose, "verbose should default to false");
}
}