Skip to main content

scitadel_export/
json_export.rs

1use scitadel_core::models::Paper;
2
3/// Export papers as a JSON array.
4pub 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}