summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-04-03 21:56:10 +0200
committerMatthias Beyer <mail@beyermatthias.de>2016-04-03 21:56:12 +0200
commita1395c090b41c6714577dcfdd5b1c0a691adcd34 (patch)
tree16abd5db43bda59727f5f33796c022bc2e411725
parent318c801dcd8b9229dace89d2a95637eb04f01a4d (diff)
Add another de/ser test
-rw-r--r--src/task.rs71
1 files changed, 70 insertions, 1 deletions
diff --git a/src/task.rs b/src/task.rs
index 83a6a8b..9c8c5b2 100644
--- a/src/task.rs
+++ b/src/task.rs
@@ -493,6 +493,11 @@ mod test {
use chrono::naive::datetime::NaiveDateTime;
use serde_json;
+ fn mkdate(s: &str) -> Date {
+ let n = NaiveDateTime::parse_from_str(s, TASKWARRIOR_DATETIME_TEMPLATE);
+ Date::from(n.unwrap())
+ }
+
#[test]
fn test_deser() {
let s =
@@ -513,7 +518,7 @@ r#"{
assert!(task.status().clone() == TaskStatus::Waiting);
assert!(task.description() == "test");
- assert!(task.entry().clone() == Date::from(NaiveDateTime::parse_from_str("20150619T165438Z", TASKWARRIOR_DATETIME_TEMPLATE).unwrap()));
+ assert!(task.entry().clone() == mkdate("20150619T165438Z"));
assert!(task.uuid().clone() == Uuid::parse_str("8ca953d5-18b4-4eb9-bd56-18f2e5b752f0").unwrap());
let back = serde_json::to_string(&task).unwrap();
@@ -528,5 +533,69 @@ r#"{
assert!(back.contains("8ca953d5-18b4-4eb9-bd56-18f2e5b752f0"));
}
+ #[test]
+ fn test_deser_more() {
+ let s =
+r#"{
+"id": 1,
+"description": "some description",
+"entry": "20150619T165438Z",
+"modified": "20160327T164007Z",
+"project": "someproject",
+"status": "waiting",
+"tags": ["some", "tags", "are", "here"],
+"uuid": "8ca953d5-18b4-4eb9-bd56-18f2e5b752f0",
+"wait": "20160508T164007Z",
+"urgency": 0.583562
+}"#;
+
+ println!("{}", s);
+
+ let task = serde_json::from_str(s);
+ println!("{:?}", task);
+ assert!(task.is_ok());
+ let task : Task = task.unwrap();
+
+ assert!(task.status().clone() == TaskStatus::Waiting);
+ assert!(task.description() == "some description");
+ assert!(task.entry().clone() == mkdate("20150619T165438Z"));
+ assert!(task.uuid().clone() == Uuid::parse_str("8ca953d5-18b4-4eb9-bd56-18f2e5b752f0").unwrap());
+
+ assert!(task.modified() == Some(&mkdate("20160327T164007Z")));
+ assert!(task.project() == Some(&String::from("someproject")));
+
+ if let Some(tags) = task.tags() {
+ for tag in tags {
+ let any_tag = [ "some", "tags", "are", "here", ]
+ .into_iter().any(|t| tag == *t);
+ assert!(any_tag, "Tag {} missing", tag);
+ }
+ } else {
+ assert!(false, "Tags completely missing");
+ }
+
+ assert!(task.wait() == Some(&mkdate("20160508T164007Z")));
+ // assert!(task.urgency().clone() == 0.583562);
+
+ let back = serde_json::to_string(&task).unwrap();
+
+ assert!(back.contains("description"));
+ assert!(back.contains("some description"));
+ assert!(back.contains("entry"));
+ assert!(back.contains("20150619T165438Z"));
+ assert!(back.contains("project"));
+ assert!(back.contains("someproject"));
+ assert!(back.contains("status"));
+ assert!(back.contains("waiting"));
+ assert!(back.contains("tags"));
+ assert!(back.contains("some"));
+ assert!(back.contains("tags"));
+ assert!(back.contains("are"));
+ assert!(back.contains("here"));
+ assert!(back.contains("uuid"));
+ assert!(back.contains("8ca953d5-18b4-4eb9-bd56-18f2e5b752f0"));
+ }
+
+
}