many_roots.rs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #![allow(non_snake_case)]
  2. use dioxus::dioxus_core::Mutation::*;
  3. use dioxus::prelude::*;
  4. use dioxus_core::ElementId;
  5. /// Should push the text node onto the stack and modify it
  6. #[test]
  7. fn many_roots() {
  8. fn app() -> Element {
  9. rsx! {
  10. div {
  11. MyNav {}
  12. MyOutlet {}
  13. }
  14. }
  15. }
  16. fn MyNav() -> Element {
  17. rsx!(
  18. div { "trailing nav" }
  19. div { "whhhhh"}
  20. div { "bhhhh" }
  21. )
  22. }
  23. fn MyOutlet() -> Element {
  24. rsx!(
  25. div { "homepage 1" }
  26. )
  27. }
  28. let mut dom = VirtualDom::new(app);
  29. let edits = dom.rebuild_to_vec();
  30. assert_eq!(
  31. edits.edits,
  32. [
  33. // load the div {} container
  34. LoadTemplate { index: 0, id: ElementId(1) },
  35. // Load myoutlet first
  36. LoadTemplate { index: 0, id: ElementId(2) },
  37. ReplacePlaceholder { path: &[1], m: 1 },
  38. // Then the MyNav
  39. LoadTemplate { index: 0, id: ElementId(3) },
  40. LoadTemplate { index: 1, id: ElementId(4) },
  41. LoadTemplate { index: 2, id: ElementId(5) },
  42. ReplacePlaceholder { path: &[0], m: 3 },
  43. // Then mount the div to the dom
  44. AppendChildren { m: 1, id: ElementId(0) },
  45. ]
  46. )
  47. }