diff options
Diffstat (limited to 'tests/test_actix.rs')
-rw-r--r-- | tests/test_actix.rs | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/tests/test_actix.rs b/tests/test_actix.rs index 792afb2..dcc5980 100644 --- a/tests/test_actix.rs +++ b/tests/test_actix.rs @@ -16,7 +16,7 @@ use actix_web::error::InternalError; use actix_web::http::StatusCode; use actix_web::test::TestRequest; use actix_web::{FromRequest, HttpResponse}; -use qs::actix::{QsQuery, QsQueryConfig}; +use qs::actix::{QsForm, QsQuery, QsQueryConfig}; use qs::Config as QsConfig; use serde::de::Error; @@ -26,7 +26,7 @@ where S: std::str::FromStr, { let s = <&str as serde::Deserialize>::deserialize(deserializer)?; - S::from_str(&s).map_err(|_| D::Error::custom("could not parse string")) + S::from_str(s).map_err(|_| D::Error::custom("could not parse string")) } #[derive(Deserialize, Serialize, Debug, PartialEq)] @@ -103,7 +103,7 @@ fn test_composite_querystring_extractor() { assert_eq!(s.bars, vec![0, 1]); assert_eq!(s.common.limit, 100); assert_eq!(s.common.offset, 50); - assert_eq!(s.common.remaining, true); + assert!(s.common.remaining); }) } @@ -140,6 +140,28 @@ fn test_custom_qs_config() { assert_eq!(s.bars, vec![3]); assert_eq!(s.common.limit, 100); assert_eq!(s.common.offset, 50); - assert_eq!(s.common.remaining, true); + assert!(s.common.remaining); + }) +} + +#[test] +fn test_form_extractor() { + futures::executor::block_on(async { + let test_data = Query { + foo: 1, + bars: vec![0, 1], + common: CommonParams { + limit: 100, + offset: 50, + remaining: true, + }, + }; + let req = TestRequest::with_uri("/test") + .set_payload(serde_qs::to_string(&test_data).unwrap()) + .to_srv_request(); + let (req, mut pl) = req.into_parts(); + + let s = QsForm::<Query>::from_request(&req, &mut pl).await.unwrap(); + assert_eq!(s.into_inner(), test_data); }) } |