diff options
author | Sam Scott <sam@osohq.com> | 2022-07-09 20:29:28 -0500 |
---|---|---|
committer | Sam Scott <sam@osohq.com> | 2022-07-09 20:36:19 -0500 |
commit | e6e52b5bee51d2b8670b124c9267b683d988aa4b (patch) | |
tree | e5a6dd38c2d63e4231f7925c5a4566c5ea481a91 /tests | |
parent | f26bdc9109abffc86ea78bb85cf3504a771d17ad (diff) |
Add a test case for dates.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_chrono.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/test_chrono.rs b/tests/test_chrono.rs new file mode 100644 index 0000000..8267d56 --- /dev/null +++ b/tests/test_chrono.rs @@ -0,0 +1,46 @@ +extern crate serde; +#[macro_use] +extern crate serde_derive; +extern crate serde_qs as qs; + +#[test] +fn test_dates() { + use chrono::prelude::*; + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] + struct Params { + date_time: DateTime<FixedOffset>, + } + + let params = Params { + date_time: FixedOffset::east(9 * 3600) + .ymd(2014, 11, 28) + .and_hms_nano(21, 45, 59, 324310806), + }; + + let s = qs::to_string(¶ms).unwrap(); + assert_eq!(s, "date_time=2014-11-28T21%3A45%3A59.324310806%2B09%3A00"); + + let data: Params = qs::from_str(&s).unwrap(); + assert_eq!(data, params); +} + +/// Curious what happens if we _don't_ urlencode the string parameter +#[test] +#[should_panic] +fn test_improperly_encoded_dates() { + use chrono::prelude::*; + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] + struct Params { + date_time: DateTime<FixedOffset>, + } + + let _expected = Params { + date_time: FixedOffset::east(9 * 3600) + .ymd(2014, 11, 28) + .and_hms_nano(21, 45, 59, 324310806), + }; + + let s = "date_time=2014-11-28T21:45:59.324310806+09:00"; + let _data: Params = qs::from_str(s).unwrap(); + // assert_eq!(data, params); +} |