message: Add a simpler way to create a Message.

Emmanuel Gil Peyrot created

Change summary

src/message.rs | 41 +++++++++++++++++++----------------------
1 file changed, 19 insertions(+), 22 deletions(-)

Detailed changes

src/message.rs 🔗

@@ -127,6 +127,21 @@ pub struct Message {
     pub payloads: Vec<Element>,
 }
 
+impl Message {
+    pub fn new(to: Option<Jid>) -> Message {
+        Message {
+            from: None,
+            to: to,
+            id: None,
+            type_: MessageType::Chat,
+            bodies: BTreeMap::new(),
+            subjects: BTreeMap::new(),
+            thread: None,
+            payloads: vec!(),
+        }
+    }
+}
+
 impl TryFrom<Element> for Message {
     type Error = Error;
 
@@ -237,16 +252,8 @@ mod tests {
     #[test]
     fn test_serialise() {
         let elem: Element = "<message xmlns='jabber:client'/>".parse().unwrap();
-        let message = Message {
-            from: None,
-            to: None,
-            id: None,
-            type_: MessageType::Normal,
-            bodies: BTreeMap::new(),
-            subjects: BTreeMap::new(),
-            thread: None,
-            payloads: vec!(),
-        };
+        let mut message = Message::new(None);
+        message.type_ = MessageType::Normal;
         let elem2 = message.into();
         assert_eq!(elem, elem2);
     }
@@ -265,18 +272,8 @@ mod tests {
     #[test]
     fn test_serialise_body() {
         let elem: Element = "<message xmlns='jabber:client' to='coucou@example.org' type='chat'><body>Hello world!</body></message>".parse().unwrap();
-        let mut bodies = BTreeMap::new();
-        bodies.insert(String::from(""), String::from("Hello world!"));
-        let message = Message {
-            from: None,
-            to: Some(Jid::from_str("coucou@example.org").unwrap()),
-            id: None,
-            type_: MessageType::Chat,
-            bodies: bodies,
-            subjects: BTreeMap::new(),
-            thread: None,
-            payloads: vec!(),
-        };
+        let mut message = Message::new(Some(Jid::from_str("coucou@example.org").unwrap()));
+        message.bodies.insert(String::from(""), String::from("Hello world!"));
         let elem2 = message.into();
         assert_eq!(elem, elem2);
     }