123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- use dioxus::dioxus_core::{ElementId, Mutation::*};
- use dioxus::prelude::*;
- use pretty_assertions::assert_eq;
- #[test]
- fn toggle_option_text() {
- let mut dom = VirtualDom::new(|| {
- let gen = generation();
- let text = if gen % 2 != 0 { Some("hello") } else { None };
- println!("{:?}", text);
- rsx! {
- div {
- {text}
- }
- }
- });
- // load the div and then assign the None as a placeholder
- assert_eq!(
- dom.rebuild_to_vec().edits,
- [
- LoadTemplate { index: 0, id: ElementId(1,) },
- CreatePlaceholder { id: ElementId(2,) },
- ReplacePlaceholder { path: &[0], m: 1 },
- AppendChildren { id: ElementId(0), m: 1 },
- ]
- );
- // Rendering again should replace the placeholder with an text node
- dom.mark_dirty(ScopeId::APP);
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreateTextNode { value: "hello".to_string(), id: ElementId(3,) },
- ReplaceWith { id: ElementId(2,), m: 1 },
- ]
- );
- // Rendering again should replace the placeholder with an text node
- dom.mark_dirty(ScopeId::APP);
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreatePlaceholder { id: ElementId(2,) },
- ReplaceWith { id: ElementId(3,), m: 1 },
- ]
- );
- }
- // Regression test for https://github.com/DioxusLabs/dioxus/issues/2815
- #[test]
- fn toggle_template() {
- fn app() -> Element {
- rsx!(
- Comp {
- if true {
- "{true}"
- }
- }
- )
- }
- #[component]
- fn Comp(children: Element) -> Element {
- let show = generation() % 2 == 0;
- rsx! {
- if show {
- {children}
- }
- }
- }
- let mut dom = VirtualDom::new(app);
- dom.rebuild(&mut dioxus_core::NoOpMutations);
- // Rendering again should replace the placeholder with an text node
- dom.mark_dirty(ScopeId::APP);
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreatePlaceholder { id: ElementId(2) },
- ReplaceWith { id: ElementId(1), m: 1 },
- ]
- );
- dom.mark_dirty(ScopeId(ScopeId::APP.0 + 1));
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreateTextNode { value: "true".to_string(), id: ElementId(1) },
- ReplaceWith { id: ElementId(2), m: 1 },
- ]
- );
- dom.mark_dirty(ScopeId(ScopeId::APP.0 + 1));
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreatePlaceholder { id: ElementId(2) },
- ReplaceWith { id: ElementId(1), m: 1 },
- ]
- );
- dom.mark_dirty(ScopeId(ScopeId::APP.0 + 1));
- assert_eq!(
- dom.render_immediate_to_vec().edits,
- [
- CreateTextNode { value: "true".to_string(), id: ElementId(1) },
- ReplaceWith { id: ElementId(2), m: 1 },
- ]
- );
- }
|