vertigo 0.12.0

Reactive Real-DOM library with SSR for Rust
Documentation
use crate::dev::inspect::{DomDebugFragment, log_start};
use crate::dom;
use crate::{self as vertigo};

#[test]
fn children_from_iter() {
    let list = (0..10).map(|i| dom! { <li>{i}</li> });

    log_start();
    let _el = dom! {
        <ul>
            "Children: "
            {..list}
        </ul>
    };
    let html = DomDebugFragment::from_log().to_pseudo_html();
    assert_eq!(
        html,
        "<ul>Children: <li>0</li><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>"
    );
}

#[test]
fn children_from_iter_inline() {
    log_start();
    let _el = dom! {
        <ul>
            "Children: "
            {..(0..10).map(|i| dom! { <li>{i}</li> })}
        </ul>
    };
    let html = DomDebugFragment::from_log().to_pseudo_html();
    assert_eq!(
        html,
        "<ul>Children: <li>0</li><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>"
    );
}

#[test]
fn children_from_block_with_iter_inline() {
    log_start();
    let _el = dom! {
        <ul>
            "Children: "
            {
                let iter = (0..10).map(|i| dom! { <li>{i}</li> });
                ..iter.skip(2)
            }
        </ul>
    };
    let html = DomDebugFragment::from_log().to_pseudo_html();
    assert_eq!(
        html,
        "<ul>Children: <li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>"
    );
}

#[test]
fn child_from_block() {
    log_start();
    let _el = dom! {
        <ul>
            "Children: "
            {
                let mut iter = (0..10).map(|i| dom! { <li>{i}</li> });
                ..iter.next()
            }
        </ul>
    };
    let html = DomDebugFragment::from_log().to_pseudo_html();
    assert_eq!(html, "<ul>Children: <li>0</li></ul>");
}

#[test]
fn iter_option() {
    let some_label = Some("Label".to_string());
    let none_label = Option::<String>::None;

    log_start();
    let _el = dom! {
        <div>
            {..some_label}
            {..none_label}
        </div>
    };
    let html = DomDebugFragment::from_log().to_pseudo_html();
    assert_eq!(html, "<div>Label</div>");
}