use greentic_flow_builder::registry::TemplateRegistry;
use greentic_flow_builder::render;
use std::path::PathBuf;
fn load_registry() -> TemplateRegistry {
let empty: Vec<PathBuf> = vec![];
TemplateRegistry::load(&empty).expect("load registry")
}
#[test]
fn test_render_menu_card_with_default_theme() {
let registry = load_registry();
let data = serde_json::json!({
"brand": "Test",
"brand_icon": "⭐",
"title": "Welcome",
"items": [
{ "id": "a", "title": "Option A", "subtitle": "First option", "icon": "🔷" }
]
});
let response = render::render_preset(®istry, "menu-card", Some("default"), &data).unwrap();
assert_eq!(response.card["type"], "AdaptiveCard");
assert_eq!(response.card["version"], "1.5");
assert_eq!(response.theme, "default");
assert_eq!(response.preset, "menu-card");
}
#[test]
fn test_render_with_corporate_theme() {
let registry = load_registry();
let data = serde_json::json!({
"title": "Test",
"items": [{ "id": "a", "title": "A" }]
});
let response = render::render_preset(®istry, "menu-card", Some("corporate"), &data).unwrap();
assert_eq!(response.theme, "corporate");
}
#[test]
fn test_render_unknown_preset_fails() {
let registry = load_registry();
let data = serde_json::json!({});
let result = render::render_preset(®istry, "nonexistent", None, &data);
assert!(result.is_err(), "unknown preset must error");
}
#[test]
fn test_render_unknown_theme_fails() {
let registry = load_registry();
let data = serde_json::json!({
"title": "T",
"items": [{"id":"a","title":"A"}]
});
let result = render::render_preset(®istry, "menu-card", Some("nonexistent-theme"), &data);
assert!(result.is_err(), "unknown theme must error");
}
#[test]
fn test_render_default_theme_when_none_specified() {
let registry = load_registry();
let data = serde_json::json!({
"title": "T",
"items": [{"id":"a","title":"A"}]
});
let response = render::render_preset(®istry, "menu-card", None, &data).unwrap();
assert_eq!(response.theme, "default");
}