mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-12-02 17:09:11 +00:00
41 lines
945 B
Rust
41 lines
945 B
Rust
use dioxus::{nodes::VSuspended, prelude::*, DomEdit, TestDom};
|
|
use dioxus_core as dioxus;
|
|
use dioxus_html as dioxus_elements;
|
|
use DomEdit::*;
|
|
|
|
mod test_logging;
|
|
|
|
fn new_dom() -> TestDom {
|
|
const IS_LOGGING_ENABLED: bool = false;
|
|
test_logging::set_up_logging(IS_LOGGING_ENABLED);
|
|
TestDom::new()
|
|
}
|
|
|
|
#[test]
|
|
fn shared_state_test() {
|
|
struct MySharedState(&'static str);
|
|
|
|
static App: FC<()> = |cx| {
|
|
cx.use_provide_state(|| MySharedState("world!"));
|
|
rsx!(cx, Child {})
|
|
};
|
|
|
|
static Child: FC<()> = |cx| {
|
|
let shared = cx.use_consume_state::<MySharedState>()?;
|
|
rsx!(cx, "Hello, {shared.0}")
|
|
};
|
|
|
|
let mut dom = VirtualDom::new(App);
|
|
let Mutations { edits, .. } = dom.rebuild();
|
|
|
|
assert_eq!(
|
|
edits,
|
|
[
|
|
CreateTextNode {
|
|
id: 0,
|
|
text: "Hello, world!"
|
|
},
|
|
AppendChildren { many: 1 },
|
|
]
|
|
);
|
|
}
|