scitadel_export/
json_export.rs1use scitadel_core::models::Paper;
2
3pub fn export_json(papers: &[Paper], indent: usize) -> String {
5 if indent > 0 {
6 serde_json::to_string_pretty(papers).unwrap_or_else(|_| "[]".to_string())
7 } else {
8 serde_json::to_string(papers).unwrap_or_else(|_| "[]".to_string())
9 }
10}
11
12#[cfg(test)]
13mod tests {
14 use super::*;
15
16 #[test]
17 fn test_export_json_empty() {
18 let result = export_json(&[], 2);
19 assert_eq!(result, "[]");
20 }
21
22 #[test]
23 fn test_export_json_round_trip() {
24 let paper = Paper::new("Test Paper");
25 let json = export_json(&[paper], 2);
26 let parsed: Vec<serde_json::Value> = serde_json::from_str(&json).unwrap();
27 assert_eq!(parsed.len(), 1);
28 assert_eq!(parsed[0]["title"], "Test Paper");
29 }
30}