funera_orchestrate/
error.rs1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum OrchestrateError {
5 #[error("agent not configured: {0}")]
6 Config(String),
7
8 #[error("session error: {0}")]
9 Session(#[from] anyhow::Error),
10
11 #[error("LLM error: {0}")]
12 Llm(String),
13
14 #[error("cancelled")]
15 Cancelled,
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21
22 #[test]
23 fn error_display_config() {
24 let err = OrchestrateError::Config("missing key".into());
25 assert_eq!(err.to_string(), "agent not configured: missing key");
26 }
27
28 #[test]
29 fn error_display_session() {
30 let inner = anyhow::anyhow!("network failure");
31 let err = OrchestrateError::Session(inner);
32 assert!(err.to_string().starts_with("session error: "));
33 }
34
35 #[test]
36 fn error_display_llm() {
37 let err = OrchestrateError::Llm("rate limited".into());
38 assert_eq!(err.to_string(), "LLM error: rate limited");
39 }
40
41 #[test]
42 fn error_display_cancelled() {
43 let err = OrchestrateError::Cancelled;
44 assert_eq!(err.to_string(), "cancelled");
45 }
46
47 #[test]
48 fn error_from_anyhow() {
49 let inner = anyhow::anyhow!("something went wrong");
50 let err: OrchestrateError = inner.into();
51 assert!(err.to_string().starts_with("session error: "));
52 }
53}