1pub mod builtin;
19mod error;
20pub mod loader;
21mod manager;
22mod template;
23
24pub use error::PromptError;
25pub use manager::PromptManager;
26pub use template::PromptTemplate;
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn test_prompt_manager_render() {
34 let mut pm = PromptManager::new();
35 let template = PromptTemplate::new("greeting", "Hello, {{ name }}!");
36 pm.add_template(template).unwrap();
37
38 let result = pm
39 .render("greeting", minijinja::context!(name => "World"))
40 .unwrap();
41 assert_eq!(result, "Hello, World!");
42 }
43
44 #[test]
45 fn test_should_load_all_builtin_templates_via_with_builtin_templates() {
46 let pm = PromptManager::with_builtin_templates().unwrap();
47 assert_eq!(pm.template_count(), builtin::BUILTIN_TEMPLATE_COUNT);
48
49 assert!(pm.get_template("init/system").is_some());
51 assert!(pm.get_template("run/dev_phase").is_some());
52 assert!(pm.get_template("plan/approve").is_some());
53 }
54
55 #[test]
56 fn test_should_render_builtin_template() {
57 let pm = PromptManager::with_builtin_templates().unwrap();
58
59 let result = pm.render("init/system", minijinja::context!());
61 assert!(result.is_ok(), "Failed to render init/system: {result:?}");
62 assert!(!result.unwrap().is_empty());
63 }
64}