1#[cfg(test)]
2mod tests {
3 use std::marker::PhantomData;
4
5 use crate::comment::Comment;
6 use crate::mj_preview::{MjPreview, MjPreviewChild};
7 use crate::prelude::OneOrMany;
8 use crate::text::Text;
9
10 #[test]
11 fn serialize() {
12 let elt = MjPreview::from("Hello World");
13 assert_eq!(
14 serde_json::to_string(&elt).unwrap(),
15 r#"{"type":"mj-preview","children":"Hello World"}"#
16 );
17
18 let elt = MjPreview {
19 tag: PhantomData,
20 attributes: (),
21 children: OneOrMany::Many(vec![
22 MjPreviewChild::Text(Text::from("Hello World")),
23 MjPreviewChild::Comment(Comment::from("this is a comment")),
24 ]),
25 };
26 assert_eq!(
27 serde_json::to_string(&elt).unwrap(),
28 r#"{"type":"mj-preview","children":["Hello World",{"type":"comment","children":"this is a comment"}]}"#
29 );
30 }
31
32 #[test]
33 fn deserialize() {
34 let elt = MjPreview::from("Hello World");
35 let json = serde_json::to_string(&elt).unwrap();
36 let res: MjPreview = serde_json::from_str(&json).unwrap();
37 assert_eq!(res.children, elt.children);
38 }
39
40 #[test]
41 fn deserialize_single_child() {
42 let first: MjPreview =
44 serde_json::from_str(r#"{"type":"mj-preview","children":"Hello World"}"#).unwrap();
45 let second: MjPreview =
46 serde_json::from_str(r#"{"type":"mj-preview","children":["Hello World"]}"#).unwrap();
47 let first_children = Vec::from_iter(first.children.iter());
48 let second_children = Vec::from_iter(second.children.iter());
49 assert_eq!(first_children, second_children);
50 }
51}