use reinhardt_core::macros::settings;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::path::PathBuf;
#[settings(fragment = true, default_policy = "required")]
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct FragmentTemplateConfig {
pub backend: String,
#[setting(optional)]
#[serde(default)]
pub dirs: Vec<PathBuf>,
#[setting(optional)]
#[serde(default)]
pub app_dirs: bool,
#[setting(optional)]
#[serde(default)]
pub options: HashMap<String, serde_json::Value>,
}
#[settings(fragment = true, section = "templates")]
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct TemplateSettings {
#[serde(default)]
pub configs: Vec<FragmentTemplateConfig>,
}
#[cfg(test)]
mod tests {
use super::*;
use crate::settings::fragment::SettingsFragment;
use rstest::rstest;
#[rstest]
fn test_template_settings_section() {
assert_eq!(TemplateSettings::section(), "templates");
}
#[rstest]
fn test_template_settings_default() {
let settings = TemplateSettings::default();
assert!(settings.configs.is_empty());
}
}