1
0

hotreload.rs 975 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. use dioxus::prelude::*;
  2. use dioxus_core::ElementId;
  3. use dioxus_core::Mutation::{AppendChildren, LoadTemplate};
  4. /// Swap out the template and get it back via the mutation
  5. #[test]
  6. fn hotreloads_template() {
  7. let old_rsx = rsx! { "A" };
  8. let name = old_rsx.as_ref().unwrap().template.get().name;
  9. let mut dom = VirtualDom::new_with_props(move |_| old_rsx.clone(), ());
  10. let new_template = Template {
  11. name,
  12. roots: &[TemplateNode::Text { text: "B" }],
  13. node_paths: &[],
  14. attr_paths: &[],
  15. };
  16. dom.replace_template(new_template);
  17. let muts = dom.rebuild_to_vec();
  18. // New template comes out
  19. assert_eq!(muts.templates.len(), 1);
  20. assert_eq!(
  21. muts.edits,
  22. [
  23. LoadTemplate {
  24. name: "packages/core/tests/hotreload.rs:8:19:0",
  25. index: 0,
  26. id: ElementId(1,),
  27. },
  28. AppendChildren { id: ElementId(0,), m: 1 },
  29. ]
  30. )
  31. }