use crate::domain::report::AnalysisReport;
use crate::ports::outbound::DiagnosticRenderer;
pub struct JsonRenderer;
impl DiagnosticRenderer for JsonRenderer {
fn render(&self, report: &AnalysisReport) -> Result<String, String> {
serde_json::to_string_pretty(report).map_err(|e| e.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn json_roundtrip_empty() {
let r = AnalysisReport::default();
let s = JsonRenderer.render(&r).unwrap();
assert!(s.contains("findings"));
let _: AnalysisReport = serde_json::from_str(&s).unwrap();
}
}