1use thiserror::Error;
4
5use ironflow_core::error::OperationError;
6use ironflow_engine::error::EngineError;
7use ironflow_store::error::StoreError;
8
9#[derive(Debug, Error)]
20pub enum WorkerError {
21 #[error("operation error: {0}")]
23 Operation(#[from] OperationError),
24
25 #[error("engine error: {0}")]
27 Engine(#[from] EngineError),
28
29 #[error("store error: {0}")]
31 Store(#[from] StoreError),
32
33 #[error("shutdown error: {0}")]
35 Shutdown(String),
36
37 #[error("internal error: {0}")]
39 Internal(String),
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn shutdown_error_display() {
48 let err = WorkerError::Shutdown("worker stopped".to_string());
49 let msg = err.to_string();
50 assert!(msg.contains("shutdown error"));
51 assert!(msg.contains("worker stopped"));
52 }
53
54 #[test]
55 fn internal_error_display() {
56 let err = WorkerError::Internal("something went wrong".to_string());
57 let msg = err.to_string();
58 assert!(msg.contains("internal error"));
59 assert!(msg.contains("something went wrong"));
60 }
61
62 #[test]
63 fn shutdown_error_debug() {
64 let err = WorkerError::Shutdown("test".to_string());
65 let debug_str = format!("{:?}", err);
66 assert!(debug_str.contains("Shutdown"));
67 }
68
69 #[test]
70 fn internal_error_debug() {
71 let err = WorkerError::Internal("test".to_string());
72 let debug_str = format!("{:?}", err);
73 assert!(debug_str.contains("Internal"));
74 }
75}