2021-10-22 05:16:39 +00:00
|
|
|
#![allow(unused, non_upper_case_globals)]
|
|
|
|
|
2021-11-01 07:49:32 +00:00
|
|
|
use dioxus::{prelude::*, DomEdit, Mutations, TestDom};
|
2021-09-16 17:20:04 +00:00
|
|
|
use dioxus_core as dioxus;
|
2021-09-25 01:46:23 +00:00
|
|
|
use dioxus_core_macro::*;
|
2021-09-16 17:20:04 +00:00
|
|
|
use dioxus_html as dioxus_elements;
|
2021-09-25 01:46:23 +00:00
|
|
|
|
2021-09-16 17:20:04 +00:00
|
|
|
use DomEdit::*;
|
|
|
|
|
|
|
|
mod test_logging;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn shared_state_test() {
|
|
|
|
struct MySharedState(&'static str);
|
|
|
|
|
2021-11-08 01:59:09 +00:00
|
|
|
static App: FC<()> = |cx, props| {
|
2021-10-11 19:35:20 +00:00
|
|
|
cx.provide_state(MySharedState("world!"));
|
2021-11-01 06:22:08 +00:00
|
|
|
cx.render(rsx!(Child {}))
|
2021-09-16 17:20:04 +00:00
|
|
|
};
|
|
|
|
|
2021-11-08 01:59:09 +00:00
|
|
|
static Child: FC<()> = |cx, props| {
|
2021-10-11 19:35:20 +00:00
|
|
|
let shared = cx.consume_state::<MySharedState>()?;
|
2021-11-01 06:22:08 +00:00
|
|
|
cx.render(rsx!("Hello, {shared.0}"))
|
2021-09-16 17:20:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
let mut dom = VirtualDom::new(App);
|
|
|
|
let Mutations { edits, .. } = dom.rebuild();
|
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
edits,
|
|
|
|
[
|
|
|
|
CreateTextNode {
|
2021-10-05 07:37:15 +00:00
|
|
|
root: 0,
|
2021-09-16 17:20:04 +00:00
|
|
|
text: "Hello, world!"
|
|
|
|
},
|
|
|
|
AppendChildren { many: 1 },
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|