1
0

simple.rs 1.9 KB

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