AkurAI Build
Menu

Public repository / master

AkurAI-Framework / crates/css/tests/build.rs

Latest change 8fbc17482f2972707fdb2d8c70707551677012fd - feat(css): atomic/utility CSS engine core (scan + generate) by Ólafur Búi Ólafsson

//! End-to-end: scan a small HTML snippet and emit exactly the used utilities.

use akurai_css::build;

#[test]
fn build_emits_exactly_used_rules() {
    let html = r#"
        <main class="flex flex-col gap-4">
          <h1 class="text-lg font-bold text-center">Title</h1>
          <p class="p-2 text-muted component-prose">Body</p>
          <button class="px-4 py-2 bg-accent">Go</button>
        </main>
    "#;

    let css = build(&[html]);

    // Every used utility present, in first-seen order; nothing else.
    let expected = concat!(
        ".flex{display:flex}",
        ".flex-col{flex-direction:column}",
        ".gap-4{gap:16px}",
        ".text-lg{font-size:1.125rem}",
        ".font-bold{font-weight:700}",
        ".text-center{text-align:center}",
        ".p-2{padding:8px}",
        ".text-muted{color:var(--muted)}",
        ".px-4{padding-left:16px;padding-right:16px}",
        ".py-2{padding-top:8px;padding-bottom:8px}",
        ".bg-accent{background-color:var(--accent)}",
    );
    assert_eq!(css, expected);

    // Hand-written component class is omitted.
    assert!(!css.contains("component-prose"));
}

#[test]
fn build_dedupes_across_sources() {
    let a = r#"<div class="p-2 flex">"#;
    let b = r#"<div class="flex p-2 m-1">"#;
    // `flex`/`p-2` first seen in `a`; `m-1` only in `b`, appended last.
    assert_eq!(
        build(&[a, b]),
        ".p-2{padding:8px}.flex{display:flex}.m-1{margin:4px}"
    );
}