vertigo 0.11.4

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

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

    let node = dom! {
        <ul>
            "Children: "
            {..list}
        </ul>
    };

    let DomNode::Node { node } = node else {
        panic!("Expected DomNode::Node")
    };

    assert_eq!(node.get_children().len(), 11);
}

#[test]
fn children_from_iter_inline() {
    let node = dom! {
        <ul>
            "Children: "
            {..(0..10).map(|i| dom! { <li>{i}</li> })}
        </ul>
    };

    let DomNode::Node { node } = node else {
        panic!("Expected DomNode::Node")
    };

    assert_eq!(node.get_children().len(), 11);
}

#[test]
fn children_from_block_with_iter_inline() {
    let node = dom! {
        <ul>
            "Children: "
            {
                let iter = (0..10).map(|i| dom! { <li>{i}</li> });
                ..iter.skip(2)
            }
        </ul>
    };

    let DomNode::Node { node } = node else {
        panic!("Expected DomNode::Node")
    };

    assert_eq!(node.get_children().len(), 9);
}

#[test]
fn child_from_block() {
    let node = dom! {
        <ul>
            "Children: "
            {
                let mut iter = (0..10).map(|i| dom! { <li>{i}</li> });
                ..iter.next()
            }
        </ul>
    };

    let DomNode::Node { node } = node else {
        panic!("Expected DomNode::Node")
    };

    assert_eq!(node.get_children().len(), 2);
}

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

    let node = dom! {
        <div>
            {..some_label}
            {..none_label}
        </div>
    };

    let DomNode::Node { node } = node else {
        panic!("Expected DomNode::Node")
    };

    assert_eq!(node.get_children().len(), 1);
}