omni_dev/atlassian/
error.rs1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum AtlassianError {
8 #[error("Atlassian credentials not configured. Run `omni-dev atlassian auth login`")]
10 CredentialsNotFound,
11
12 #[error("Atlassian API request failed: HTTP {status}: {body}")]
14 ApiRequestFailed {
15 status: u16,
17 body: String,
19 },
20
21 #[error("Invalid JFM document: {0}")]
23 InvalidDocument(String),
24
25 #[error("ADF conversion error: {0}")]
27 ConversionError(String),
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn credentials_not_found_display() {
36 let err = AtlassianError::CredentialsNotFound;
37 assert!(err.to_string().contains("not configured"));
38 }
39
40 #[test]
41 fn api_request_failed_display() {
42 let err = AtlassianError::ApiRequestFailed {
43 status: 404,
44 body: "Not Found".to_string(),
45 };
46 let msg = err.to_string();
47 assert!(msg.contains("404"));
48 assert!(msg.contains("Not Found"));
49 }
50
51 #[test]
52 fn invalid_document_display() {
53 let err = AtlassianError::InvalidDocument("bad format".to_string());
54 assert!(err.to_string().contains("bad format"));
55 }
56
57 #[test]
58 fn conversion_error_display() {
59 let err = AtlassianError::ConversionError("oops".to_string());
60 assert!(err.to_string().contains("oops"));
61 }
62}