faucet_source_rest/extract/
jsonpath.rs1pub use faucet_core::util::extract_records;
8
9#[cfg(test)]
10mod tests {
11 use super::*;
12 use serde_json::json;
13
14 #[test]
15 fn test_extract_nested_records() {
16 let body = json!({
17 "data": [
18 {"id": 1, "name": "Alice"},
19 {"id": 2, "name": "Bob"},
20 ],
21 "meta": {"total": 2}
22 });
23 let records = extract_records(&body, Some("$.data[*]")).unwrap();
24 assert_eq!(records.len(), 2);
25 assert_eq!(records[0]["name"], "Alice");
26 }
27
28 #[test]
29 fn test_extract_no_path_array() {
30 let body = json!([{"id": 1}, {"id": 2}]);
31 let records = extract_records(&body, None).unwrap();
32 assert_eq!(records.len(), 2);
33 }
34
35 #[test]
36 fn test_extract_no_path_object() {
37 let body = json!({"id": 1, "name": "Alice"});
38 let records = extract_records(&body, None).unwrap();
39 assert_eq!(records.len(), 1);
40 assert_eq!(records[0]["name"], "Alice");
41 }
42
43 #[test]
44 fn test_extract_empty_result() {
45 let body = json!({"data": []});
46 let records = extract_records(&body, Some("$.data[*]")).unwrap();
47 assert!(records.is_empty());
48 }
49}