mini-docs 0.6.0

A minimal, secure build-time Markdown to HTML generator for the mini-* family.
Documentation
use super::*;
use serde_json::json;

#[test]
fn draft_true_is_detected() {
    assert!(is_draft(&json!({"draft": true})));
}

#[test]
fn missing_draft_key_defaults_to_false() {
    assert!(!is_draft(&json!({})));
}

#[test]
fn entry_fills_in_every_field_when_frontmatter_has_them_all() {
    let frontmatter = json!({
        "date": "2026-07-14",
        "updated": "2026-07-15",
        "version": "2",
        "summary": "A short summary.",
        "tags": ["rust", "docs"],
        "pinned": true,
    });

    let entry = page_entry(
        "design-review-sync",
        "Design review sync",
        "/design-review-sync",
        &frontmatter,
    );

    assert_eq!(
        entry,
        json!({
            "id": "design-review-sync",
            "title": "Design review sync",
            "date": "2026-07-14",
            "updated": "2026-07-15",
            "version": "2",
            "url": "/design-review-sync",
            "summary": "A short summary.",
            "tags": ["rust", "docs"],
            "pinned": true,
        })
    );
}

#[test]
fn entry_defaults_missing_fields_when_frontmatter_is_empty() {
    let entry = page_entry(
        "weekly-eng-report",
        "Weekly eng report",
        "/weekly-eng-report",
        &json!({}),
    );

    assert_eq!(
        entry,
        json!({
            "id": "weekly-eng-report",
            "title": "Weekly eng report",
            "date": "",
            "updated": "",
            "version": "",
            "url": "/weekly-eng-report",
            "summary": "",
            "tags": [],
            "pinned": false,
        })
    );
}

#[test]
fn non_string_tag_items_are_dropped_silently() {
    let frontmatter = json!({"tags": ["rust", true, "docs"]});

    let entry = page_entry("id", "Title", "/id", &frontmatter);

    assert_eq!(entry["tags"], json!(["rust", "docs"]));
}