123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- use dioxus::dioxus_core::Mutation::*;
- use dioxus::prelude::*;
- use dioxus_core::ElementId;
- /// Should push the text node onto the stack and modify it
- #[test]
- fn nested_passthru_creates() {
- fn app() -> Element {
- rsx! {
- PassThru {
- PassThru {
- PassThru { div { "hi" } }
- }
- }
- }
- }
- #[component]
- fn PassThru(children: Element) -> Element {
- rsx!({ children })
- }
- let mut dom = VirtualDom::new(app);
- let edits = dom.rebuild_to_vec();
- assert_eq!(
- edits.edits,
- [
- LoadTemplate { index: 0, id: ElementId(1) },
- AppendChildren { m: 1, id: ElementId(0) },
- ]
- )
- }
- /// Should load all the templates and append them
- ///
- /// Take note on how we don't spit out the template for child_comp since it's entirely dynamic
- #[test]
- fn nested_passthru_creates_add() {
- fn app() -> Element {
- rsx! {
- ChildComp {
- "1"
- ChildComp {
- "2"
- ChildComp {
- "3"
- div { "hi" }
- }
- }
- }
- }
- }
- #[component]
- fn ChildComp(children: Element) -> Element {
- rsx! {{children}}
- }
- let mut dom = VirtualDom::new(app);
- assert_eq!(
- dom.rebuild_to_vec().edits,
- [
- // load 1
- LoadTemplate { index: 0, id: ElementId(1) },
- // load 2
- LoadTemplate { index: 0, id: ElementId(2) },
- // load 3
- LoadTemplate { index: 0, id: ElementId(3) },
- // load div that contains 4
- LoadTemplate { index: 1, id: ElementId(4) },
- AppendChildren { id: ElementId(0), m: 4 },
- ]
- );
- }
- /// note that the template is all dynamic roots - so it doesn't actually get cached as a template
- #[test]
- fn dynamic_node_as_root() {
- fn app() -> Element {
- let a = 123;
- let b = 456;
- rsx! { "{a}" "{b}" }
- }
- let mut dom = VirtualDom::new(app);
- let edits = dom.rebuild_to_vec();
- // Since the roots were all dynamic, they should not cause any template muations
- // The root node is text, so we just create it on the spot
- assert_eq!(
- edits.edits,
- [
- CreateTextNode { value: "123".to_string(), id: ElementId(1) },
- CreateTextNode { value: "456".to_string(), id: ElementId(2) },
- AppendChildren { id: ElementId(0), m: 2 }
- ]
- )
- }
|