smos_application/errors/
provider_error.rs1use std::time::Duration;
8use thiserror::Error;
9
10#[derive(Debug, Error)]
12pub enum ProviderError {
13 #[error("provider unavailable: {0}")]
14 Unavailable(String),
15
16 #[error("provider timeout after {0:?}")]
17 Timeout(Duration),
18
19 #[error("provider request failed: {0}")]
20 RequestFailed(String),
21
22 #[error("provider response invalid: {0}")]
23 InvalidResponse(String),
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29
30 #[test]
31 fn timeout_display_includes_duration() {
32 let e = ProviderError::Timeout(Duration::from_millis(750));
33 assert!(e.to_string().contains("750ms"));
34 }
35
36 #[test]
37 fn unavailable_display_includes_message() {
38 let e = ProviderError::Unavailable("connection refused".into());
39 assert!(e.to_string().contains("connection refused"));
40 }
41}