type_bridge_server/
error.rs1#[derive(Debug, thiserror::Error)]
2pub enum PipelineError {
3 #[error("Configuration error: {0}")]
4 Config(String),
5 #[error("TypeDB connection error: {0}")]
6 Connection(String),
7 #[error("Unsupported version: {0}")]
8 UnsupportedVersion(#[from] type_bridge_core_lib::version::VersionError),
9 #[error("Query execution error: {0}")]
10 QueryExecution(String),
11 #[error("Validation error: {0}")]
12 Validation(String),
13 #[error("Parse error: {0}")]
14 Parse(String),
15 #[error("Schema error: {0}")]
16 Schema(String),
17 #[error("Interceptor error: {0}")]
18 Interceptor(String),
19 #[error("Internal error: {0}")]
20 Internal(String),
21}
22
23#[cfg(test)]
24#[cfg_attr(coverage_nightly, coverage(off))]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn display_config_error() {
30 let e = PipelineError::Config("bad config".into());
31 assert_eq!(e.to_string(), "Configuration error: bad config");
32 }
33
34 #[test]
35 fn display_connection_error() {
36 let e = PipelineError::Connection("refused".into());
37 assert_eq!(e.to_string(), "TypeDB connection error: refused");
38 }
39
40 #[test]
41 fn display_query_execution_error() {
42 let e = PipelineError::QueryExecution("syntax error".into());
43 assert_eq!(e.to_string(), "Query execution error: syntax error");
44 }
45
46 #[test]
47 fn display_validation_error() {
48 let e = PipelineError::Validation("invalid type".into());
49 assert_eq!(e.to_string(), "Validation error: invalid type");
50 }
51
52 #[test]
53 fn display_parse_error() {
54 let e = PipelineError::Parse("unexpected token".into());
55 assert_eq!(e.to_string(), "Parse error: unexpected token");
56 }
57
58 #[test]
59 fn display_schema_error() {
60 let e = PipelineError::Schema("file not found".into());
61 assert_eq!(e.to_string(), "Schema error: file not found");
62 }
63
64 #[test]
65 fn display_interceptor_error() {
66 let e = PipelineError::Interceptor("access denied".into());
67 assert_eq!(e.to_string(), "Interceptor error: access denied");
68 }
69
70 #[test]
71 fn display_internal_error() {
72 let e = PipelineError::Internal("unexpected".into());
73 assert_eq!(e.to_string(), "Internal error: unexpected");
74 }
75
76 #[test]
77 fn debug_format() {
78 let e = PipelineError::Config("test".into());
79 let debug = format!("{:?}", e);
80 assert!(debug.contains("Config"));
81 }
82
83 #[test]
84 fn display_unsupported_version_error() {
85 use type_bridge_core_lib::version::{Version, VersionError};
86 let inner = VersionError::Unsupported {
87 component: "server",
88 found: Version::new(2, 28, 0),
89 };
90 let e = PipelineError::UnsupportedVersion(inner);
91 let msg = e.to_string();
92 assert!(msg.contains("Unsupported version"), "missing prefix: {msg}");
93 assert!(msg.contains("2.28.0"), "missing detected version: {msg}");
94 }
95}