1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
use super::{MJText, NAME}; use crate::json_attrs_and_children_deserializer; use crate::json_attrs_and_children_serializer; use serde::de::{Error, MapAccess}; use serde::ser::SerializeMap; use std::fmt; json_attrs_and_children_serializer!(MJText, NAME); json_attrs_and_children_deserializer!(MJText, MJTextVisitor, NAME); #[cfg(test)] mod tests { use crate::mj_text::MJText; #[test] fn serialize() { let mut elt = MJText::default(); elt.attributes.insert("margin".into(), "42px".into()); assert_eq!( serde_json::to_string(&elt).unwrap(), r#"{"type":"mj-text","attributes":{"margin":"42px"}}"# ); } #[test] fn deserialize() { let json = r#"{"type":"mj-text","attributes":{"margin-bottom":"20px"},"children":[{"type":"comment","children":"Hello World!"},"Hello World!"]}"#; let res: MJText = serde_json::from_str(&json).unwrap(); assert_eq!(res.attributes.len(), 1); assert_eq!(res.children.len(), 2); } }