katana-canvas-forge 0.1.7

Versioned diagram rendering and document export runtime for KatanA (Mermaid, Draw.io, HTML/PDF/PNG/JPEG).
Documentation
use super::HtmlExportTemplate;
use crate::markdown::color_preset::DiagramColorPreset;

#[test]
fn relative_path_resolution_handles_unclosed_src_and_absolute_urls() {
    let resolved = HtmlExportTemplate::resolve_relative_paths(
        r#"<img src="a file.png"><img src="data:image/png;base64,aaa"><img src="broken"#,
        std::path::Path::new("/tmp/doc"),
    );

    assert!(resolved.contains(r#"src="file:///tmp/doc/a%20file.png""#));
    assert!(resolved.contains(r#"src="data:image/png;base64,aaa""#));
    assert!(resolved.ends_with(r#"src="broken"#));
}

#[test]
fn generated_css_resolves_transparent_background_for_light_and_dark_presets() {
    let light_css = HtmlExportTemplate::generate_css(DiagramColorPreset::light());
    let dark_css = HtmlExportTemplate::generate_css(DiagramColorPreset::dark());
    let custom = DiagramColorPreset {
        background: "#123456".into(),
        text: "#eeeeee".into(),
        ..DiagramColorPreset::default()
    };
    let custom_css = HtmlExportTemplate::generate_css(&custom);

    assert!(light_css.contains("background-color: #ffffff"));
    assert!(dark_css.contains("background-color: #1e1e1e"));
    assert!(custom_css.contains("background-color: #123456"));
}