batch_mode_batch_triple/
retry_failed_requests.rs

1// ---------------- [ File: batch-mode-batch-triple/src/retry_failed_requests.rs ]
2crate::ix!();
3
4impl BatchFileTriple {
5
6    pub async fn retry_failed_requests(&self, error_data: &BatchErrorData) 
7        -> Result<(), BatchErrorProcessingError> 
8    {
9        // Collect failed requests
10        let _failed_requests = error_data.responses().iter().collect::<Vec<_>>();
11        // Implement retry logic here
12        //todo!("Implement retry logic for failed requests");
13        Ok(())
14    }
15}
16
17#[cfg(test)]
18mod batch_file_triple_retry_failed_requests_exhaustive_tests {
19    use super::*;
20    use serde_json::json;
21
22    #[traced_test]
23    async fn retry_failed_requests_handles_empty_data() {
24        trace!("===== BEGIN TEST: retry_failed_requests_handles_empty_data =====");
25        let triple = make_mock_batch_file_triple();
26        let empty_error_data = BatchErrorData::new(vec![]);
27        let res = triple.retry_failed_requests(&empty_error_data).await;
28        debug!("Result of retry_failed_requests on empty data: {:?}", res);
29        assert!(res.is_ok(), "Should succeed with empty data");
30        trace!("===== END TEST: retry_failed_requests_handles_empty_data =====");
31    }
32
33    #[traced_test]
34    async fn retry_failed_requests_no_op_for_error_data() {
35        trace!("===== BEGIN TEST: retry_failed_requests_no_op_for_error_data =====");
36        let triple = make_mock_batch_file_triple();
37
38        // We replace the old (BatchErrorBody::new / BatchResponse::new) calls
39        // with an explicit mock_with_code_and_body that yields a 400 error record
40        let error_response = BatchResponseRecord::mock_with_code_and_body(
41            "req-99",
42            400,
43            &json!({
44                "error": {
45                    "message": "Retry me",
46                    "type": "test_error",
47                    "param": null,
48                    "code": null
49                }
50            }),
51        );
52        let error_data = BatchErrorData::new(vec![error_response]);
53
54        // Currently unimplemented; we just confirm it doesn't fail or panic.
55        let res = triple.retry_failed_requests(&error_data).await;
56        debug!("Result of retry_failed_requests call: {:?}", res);
57        assert!(res.is_ok(), "Method is a no-op but should still succeed");
58        trace!("===== END TEST: retry_failed_requests_no_op_for_error_data =====");
59    }
60}