simple.rs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. use dioxus::prelude::*;
  2. #[test]
  3. fn simple() {
  4. fn app(cx: Scope) -> Element {
  5. render! { div { "hello!" } }
  6. }
  7. let mut dom = VirtualDom::new(app);
  8. dom.rebuild();
  9. assert_eq!(
  10. dioxus_ssr::SsrRender::default().render_vdom(&dom),
  11. "<div>hello!</div>"
  12. );
  13. }
  14. #[test]
  15. fn lists() {
  16. fn app(cx: Scope) -> Element {
  17. render! {
  18. ul {
  19. (0..5).map(|i| rsx! {
  20. li { "item {i}" }
  21. })
  22. }
  23. }
  24. }
  25. let mut dom = VirtualDom::new(app);
  26. dom.rebuild();
  27. assert_eq!(
  28. dioxus_ssr::SsrRender::default().render_vdom(&dom),
  29. "<ul><li>item 0</li><li>item 1</li><li>item 2</li><li>item 3</li><li>item 4</li></ul>"
  30. );
  31. }
  32. #[test]
  33. fn dynamic() {
  34. fn app(cx: Scope) -> Element {
  35. let dynamic = 123;
  36. render! {
  37. div { "Hello world 1 -->" "{dynamic}" "<-- Hello world 2" }
  38. }
  39. }
  40. let mut dom = VirtualDom::new(app);
  41. dom.rebuild();
  42. assert_eq!(
  43. dioxus_ssr::SsrRender::default().render_vdom(&dom),
  44. "<div>Hello world 1 -->123<-- Hello world 2</div>"
  45. );
  46. }
  47. #[test]
  48. fn components() {
  49. fn app(cx: Scope) -> Element {
  50. render! {
  51. div {
  52. (0..5).map(|name| rsx! {
  53. my_component { name: name }
  54. })
  55. }
  56. }
  57. }
  58. #[inline_props]
  59. fn my_component(cx: Scope, name: i32) -> Element {
  60. render! {
  61. div { "component {name}" }
  62. }
  63. }
  64. let mut dom = VirtualDom::new(app);
  65. dom.rebuild();
  66. assert_eq!(
  67. dioxus_ssr::SsrRender::default().render_vdom(&dom),
  68. "<div><div>component 0</div><div>component 1</div><div>component 2</div><div>component 3</div><div>component 4</div></div>"
  69. );
  70. }