hyperchad_template 0.3.0

HyperChad template package
Documentation
use hyperchad_template::container;

#[test]
fn test_details_without_summary() {
    let _result = container! {
        details {
            div { "Just content" }
        }
    };
}

#[test]
fn test_details_with_summary_first() {
    let _result = container! {
        details {
            summary { "Click me" }
            div { "Hidden content" }
        }
    };
}

#[test]
fn test_details_with_open_attribute() {
    let _result = container! {
        details open="true" {
            summary { "Already open" }
            div { "Visible content" }
        }
    };
}

#[test]
fn test_details_renders_to_html() {
    let result = container! {
        details {
            summary { "Click me" }
            div { "Hidden content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();

    assert!(html.contains("<details"));
    assert!(html.contains("<summary"));
    assert!(html.contains("Click me"));
    assert!(html.contains("Hidden content"));
}

#[test]
fn test_details_with_open_renders_open_attribute() {
    let result = container! {
        details open="true" {
            summary { "Test" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("open"));
}

#[test]
fn test_details_open_boolean_literal() {
    let result = container! {
        details open=true {
            summary { "Test" }
            div { "Content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(html.contains("open"));
    assert!(html.contains("Test"));
}

#[test]
fn test_details_open_boolean_false() {
    let result = container! {
        details open=false {
            summary { "Test" }
            div { "Content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(!html.contains("open"));
}

#[test]
fn test_details_open_variable() {
    let is_open = true;
    let result = container! {
        details open=(is_open) {
            summary { "Test" }
            div { "Content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(html.contains("open"));
}

#[test]
fn test_details_open_variable_false() {
    let is_open = false;
    let result = container! {
        details open=(is_open) {
            summary { "Test" }
            div { "Content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(!html.contains("open"));
}

#[test]
fn test_details_open_presence_only() {
    let result = container! {
        details open {
            summary { "Test" }
            div { "Content" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(html.contains("open"));
}

#[test]
fn test_details_open_string_true() {
    let result = container! {
        details open="true" {
            summary { "Test" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("open"));
}

#[test]
fn test_details_open_string_false() {
    let result = container! {
        details open="false" {
            summary { "Test" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(!html.contains("open"));
}

#[test]
fn test_details_no_open_attribute() {
    let result = container! {
        details {
            summary { "Test" }
        }
    };

    let html = result[0].display_to_string_default(true, false).unwrap();
    assert!(html.contains("<details"));
    assert!(!html.contains("open"));
}