use std::path::PathBuf;
use code_repo_wiki::config::{load_config, schema};
const TEMPLATE: &str = include_str!("../config.toml");
#[test]
fn test_template_no_dead_keys() {
let value: toml::Value = toml::from_str(TEMPLATE).expect("模板必须是合法 TOML");
let table = value.as_table().expect("模板必须是表结构");
assert!(!table.contains_key("project"), "模板不得含死键段 [project]");
assert!(!table.contains_key("generate"), "模板不得含死键段 [generate]");
assert!(!table.contains_key("output"), "模板不得含死键段 [output](v30 硬编码)");
assert!(!table.contains_key("search"), "模板不得含死键段 [search](v30 硬编码)");
assert!(!table.contains_key("incremental"), "模板不得含死键段 [incremental](v30 硬编码)");
assert!(!table.contains_key("plan"), "模板不得含死键段 [plan](v30 删除)");
for section in ["wiki", "llm", "embed"] {
assert!(table.contains_key(section), "模板缺少配置段 [{section}]");
}
}
#[test]
fn test_template_loads_cleanly() {
let dir = std::env::temp_dir().join(format!("code-repo-wiki-template-test-{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let path: PathBuf = dir.join("config.toml");
std::fs::write(&path, TEMPLATE).unwrap();
let config: schema::WikiConfig = load_config(&path).expect("模板必须可被 load_config 加载");
assert_eq!(config.llm.api_key_env, "OPENCODEGO2_API_KEY");
assert!(!config.embed.model.is_empty());
let _ = std::fs::remove_dir_all(&dir);
}