simple.rs 1.9 KB

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