use reinhardt_core::macros::settings;
use serde::{Deserialize, Serialize};
fn default_level() -> String {
"info".to_string()
}
fn default_format() -> String {
"text".to_string()
}
#[settings(fragment = true, section = "logging")]
#[non_exhaustive]
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct LoggingSettings {
#[serde(default = "default_level")]
pub level: String,
#[serde(default = "default_format")]
pub format: String,
}
impl Default for LoggingSettings {
fn default() -> Self {
Self {
level: "info".to_string(),
format: "text".to_string(),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::settings::fragment::SettingsFragment;
use rstest::rstest;
#[rstest]
fn test_logging_section_name() {
let section = LoggingSettings::section();
assert_eq!(section, "logging");
}
#[rstest]
fn test_logging_default_values() {
let settings = LoggingSettings::default();
assert_eq!(settings.level, "info");
assert_eq!(settings.format, "text");
}
}