123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //! Do we create fragments properly across complex boundaries?
- use dioxus::core::Mutation::*;
- use dioxus::prelude::*;
- use dioxus_core::ElementId;
- #[test]
- fn empty_fragment_creates_nothing() {
- fn app(cx: Scope) -> Element {
- cx.render(rsx!(()))
- }
- let mut vdom = VirtualDom::new(app);
- let edits = vdom.rebuild();
- assert_eq!(
- edits.edits,
- [
- CreatePlaceholder { id: ElementId(1) },
- AppendChildren { id: ElementId(0), m: 1 }
- ]
- );
- }
- #[test]
- fn root_fragments_work() {
- let mut vdom = VirtualDom::new(|cx| {
- cx.render(rsx!(
- div { "hello" }
- div { "goodbye" }
- ))
- });
- assert_eq!(
- vdom.rebuild().edits.last().unwrap(),
- &AppendChildren { id: ElementId(0), m: 2 }
- );
- }
- #[test]
- fn fragments_nested() {
- let mut vdom = VirtualDom::new(|cx| {
- cx.render(rsx!(
- div { "hello" }
- div { "goodbye" }
- rsx! {
- div { "hello" }
- div { "goodbye" }
- rsx! {
- div { "hello" }
- div { "goodbye" }
- rsx! {
- div { "hello" }
- div { "goodbye" }
- }
- }
- }
- ))
- });
- assert_eq!(
- vdom.rebuild().edits.last().unwrap(),
- &AppendChildren { id: ElementId(0), m: 8 }
- );
- }
- #[test]
- fn fragments_across_components() {
- fn app(cx: Scope) -> Element {
- cx.render(rsx! {
- demo_child {}
- demo_child {}
- demo_child {}
- demo_child {}
- })
- }
- fn demo_child(cx: Scope) -> Element {
- let world = "world";
- cx.render(rsx! {
- "hellO!"
- world
- })
- }
- assert_eq!(
- VirtualDom::new(app).rebuild().edits.last().unwrap(),
- &AppendChildren { id: ElementId(0), m: 8 }
- );
- }
- #[test]
- fn list_fragments() {
- fn app(cx: Scope) -> Element {
- cx.render(rsx!(
- h1 {"hello"}
- (0..6).map(|f| rsx!( span { "{f}" }))
- ))
- }
- assert_eq!(
- VirtualDom::new(app).rebuild().edits.last().unwrap(),
- &AppendChildren { id: ElementId(0), m: 7 }
- );
- }
|