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 | |
parent | f26bdc9109abffc86ea78bb85cf3504a771d17ad (diff) |
Add a test case for dates.
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | tests/test_chrono.rs | 46 |
2 files changed, 47 insertions, 0 deletions
@@ -25,6 +25,7 @@ warp-framework = { package = "warp", version = "0.3", default-features = false, axum-framework = { package = "axum", version = "0.5", default-features = false, optional = true } [dev-dependencies] +chrono = { version = "0.4", features = ["serde"] } csv = "1.1" rand = "0.8" serde_derive = "1.0" 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); +} |