batch_mode_batch_schema/
batch_error_details.rs1crate::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 });
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}