simple.rs 1.8 KB

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