From 5bfaa7aa9f38806436e15928917cbd841a61e0f2 Mon Sep 17 00:00:00 2001 From: Kenaniah Cerny Date: Wed, 9 Jun 2021 12:20:57 -0700 Subject: fixes #45 - encoding not working correctly on maps (#47) --- tests/test_serialize.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests') diff --git a/tests/test_serialize.rs b/tests/test_serialize.rs index cc4492c..94a8de8 100644 --- a/tests/test_serialize.rs +++ b/tests/test_serialize.rs @@ -178,3 +178,24 @@ fn serialize_bytes() { let s = qs::to_string(&Query { bytes }).unwrap(); assert_eq!(s, "bytes=hello%2C+world%21"); } + +#[test] +fn serialize_hashmap_keys() { + // Issue: https://github.com/samscott89/serde_qs/issues/45 + + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] + struct HashParams { + attrs: std::collections::HashMap, + } + + let data = HashParams { + attrs: vec![ + ("key 1!".to_owned(), "val 1".to_owned()), + ("key 2!".to_owned(), "val 2".to_owned()), + ] + .into_iter() + .collect(), + }; + let s = qs::to_string(&data).unwrap(); + assert!(s == "attrs[key+1%21]=val+1&attrs[key+2%21]=val+2" || s == "attrs[key+2%21]=val+2&attrs[key+1%21]=val+1"); +} -- cgit v1.2.3