batch_mode_batch_schema/
batch_error_details.rs

1// ---------------- [ File: batch-mode-batch-schema/src/batch_error_details.rs ]
2crate::ix!();
3
4#[derive(Getters,Builder,Clone,Debug,Serialize,Deserialize)]
5#[builder(setter(into))]
6#[getset(get="pub")]
7pub struct BatchErrorDetails {
8    message:    String,
9
10    #[serde(rename = "type")]
11    error_type: ErrorType,
12
13    #[builder(default)]
14    param:      Option<String>,
15
16    #[builder(default)]
17    code:       Option<String>,
18}
19
20impl BatchErrorDetails {
21
22    pub fn mock(custom_id: &str) -> Self {
23        BatchErrorDetails {
24            message:    format!("Error for {}", custom_id),
25            error_type: ErrorType::Unknown("some_error".to_string()),
26            param:      None,
27            code:       None,
28        }
29    }
30}
31
32#[cfg(test)]
33mod batch_error_details_tests {
34    use super::*;
35    use serde_json::json;
36
37    #[test]
38    fn test_error_details_full() {
39        let json_data = json!({
40            "message": "Invalid parameters",
41            "type":    "parameter_error",
42            "param":   "query",
43            "code":    "invalid_query"
44        });
45
46        let error_details: BatchErrorDetails = serde_json::from_value(json_data).unwrap();
47        pretty_assert_eq!(error_details.message(), "Invalid parameters");
48        pretty_assert_eq!(error_details.error_type(), "parameter_error");
49        pretty_assert_eq!(*error_details.param(), Some("query".to_string()));
50        pretty_assert_eq!(*error_details.code(), Some("invalid_query".to_string()));
51    }
52
53    #[test]
54    fn test_error_details_missing_optional_fields() {
55        let json_data = json!({
56            "message": "Server error",
57            "type": "server_error"
58            // 'param' and 'code' are missing
59        });
60
61        let error_details: BatchErrorDetails = serde_json::from_value(json_data).unwrap();
62        pretty_assert_eq!(error_details.message(), "Server error");
63        pretty_assert_eq!(error_details.error_type(), "server_error");
64        pretty_assert_eq!(*error_details.param(), None);
65        pretty_assert_eq!(*error_details.code(), None);
66    }
67}