batch_mode_batch_schema/
batch_request_record.rs

1// ---------------- [ File: batch-mode-batch-schema/src/batch_request_record.rs ]
2crate::ix!();
3
4#[derive(Builder,Getters,Clone,Debug,Serialize,Deserialize)]
5#[builder(setter(into))]
6#[getset(get="pub")]
7pub struct BatchRequestRecord {
8    id:        BatchRequestId,
9    custom_id: CustomRequestId,
10    prompt:    Option<String>,
11    messages:  Option<Vec<String>>,
12}
13
14#[cfg(test)]
15mod batch_request_record_tests {
16    use super::*;
17    use serde_json::json;
18
19    #[traced_test]
20    fn test_batch_request_record_deserialization_full() {
21        info!("Starting test: test_batch_request_record_deserialization_full");
22
23        let json_data = json!({
24            "id": "batch_req_123",
25            "custom_id": "custom_456",
26            "prompt": "Test prompt",
27            "messages": ["Message 1", "Message 2"]
28        });
29
30        let record: BatchRequestRecord = serde_json::from_value(json_data).unwrap();
31
32        pretty_assert_eq!(record.id().as_str(), "batch_req_123");
33        pretty_assert_eq!(record.custom_id().as_str(), "custom_456");
34        pretty_assert_eq!(*record.prompt(), Some("Test prompt".to_string()));
35
36        // FIX: do not unwrap() by value. We do as_ref().unwrap() to avoid moving
37        pretty_assert_eq!(
38            record.messages().as_ref().unwrap(),
39            &["Message 1".to_string(), "Message 2".to_string()]
40        );
41
42        info!("Finished test: test_batch_request_record_deserialization_full");
43    }
44
45    #[test]
46    fn test_batch_request_record_deserialization_partial() {
47        let json_data = json!({
48            "id": "batch_req_789",
49            "custom_id": "custom_012"
50            // 'prompt' and 'messages' are missing
51        });
52
53        let record: BatchRequestRecord = serde_json::from_value(json_data).unwrap();
54
55        pretty_assert_eq!(record.id().as_str(), "batch_req_789");
56        pretty_assert_eq!(record.custom_id().as_str(), "custom_012");
57        assert!(record.prompt().is_none());
58        assert!(record.messages().is_none());
59    }
60
61    #[test]
62    fn test_batch_request_record_missing_required_fields() {
63        let json_data = json!({
64            "custom_id": "custom_345"
65            // 'id' is missing
66        });
67
68        let result: Result<BatchRequestRecord, _> = serde_json::from_value(json_data);
69        assert!(result.is_err(), "Deserialization should fail if required fields are missing");
70    }
71}