From f3e791ced957873480d39ad792748d1dba6ce998 Mon Sep 17 00:00:00 2001 From: serayuzgur Date: Thu, 20 Apr 2017 21:05:44 +0300 Subject: [PATCH] tests improved to satisfy #14 #11 --- src/service/query.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/service/query.rs b/src/service/query.rs index 6dbbe54..fa95dda 100644 --- a/src/service/query.rs +++ b/src/service/query.rs @@ -14,10 +14,15 @@ pub fn split_query(query: Option<&str>) -> Vec { if parts.get(0).is_none() || parts.get(1).is_none() { continue; } - let key = parts.get(0).unwrap().to_string(); + let mut key = parts.get(0).unwrap().to_string(); let value = parts.get(1).unwrap().to_string(); - let op = match key.split("_").collect::>().get(1) { - Some(v) => v.to_string(), + let mut key_op = key.to_string(); + let key_op_vec = key_op.split("_").filter(|x| !x.is_empty()).collect::>(); + let op = match key_op_vec.get(1) { + Some(v) => { + key = key_op_vec.get(0).unwrap().to_string(); + v.to_string() + } None => "=".to_string(), }; @@ -68,5 +73,20 @@ mod tests { vec![Query::new("a".to_string(), "=".to_string(), "1".to_string()), Query::new("b".to_string(), "=".to_string(), "2".to_string()), Query::new("c".to_string(), "=".to_string(), "3".to_string())]); + + assert_eq!(split_query(Some("_start=20&_end=30")), + vec![Query::new("_start".to_string(), "=".to_string(), "20".to_string()), + Query::new("_end".to_string(), "=".to_string(), "30".to_string())]); + assert_eq!(split_query(Some("views_gte=10&views_lte=20")), + vec![Query::new("views".to_string(), "gte".to_string(), "10".to_string()), + Query::new("views".to_string(), "lte".to_string(), "20".to_string())]); + assert_eq!(split_query(Some("id_ne=1")), + vec![Query::new("id".to_string(), "ne".to_string(), "1".to_string())]); + assert_eq!(split_query(Some("title_like=server")), + vec![Query::new("title".to_string(), "like".to_string(), "server".to_string())]); + assert_eq!(split_query(Some("q=internet")), + vec![Query::new("q".to_string(), "=".to_string(), "internet".to_string())]); + + } -} \ No newline at end of file +}