diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_actix.rs | 30 | ||||
| -rw-r--r-- | tests/test_axum.rs | 42 | ||||
| -rw-r--r-- | tests/test_deserialize.rs | 2 | ||||
| -rw-r--r-- | tests/test_warp.rs | 6 | 
4 files changed, 71 insertions, 9 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);      })  } diff --git a/tests/test_axum.rs b/tests/test_axum.rs index 16449b9..dd86a9e 100644 --- a/tests/test_axum.rs +++ b/tests/test_axum.rs @@ -8,7 +8,7 @@ extern crate axum_framework as axum;  extern crate serde_qs as qs;  use axum::{extract::FromRequestParts, http::StatusCode, response::IntoResponse}; -use qs::axum::{QsQuery, QsQueryConfig, QsQueryRejection}; +use qs::axum::{OptionalQsQuery, QsQuery, QsQueryConfig, QsQueryRejection};  use serde::de::Error;  fn from_str<'de, D, S>(deserializer: D) -> Result<S, D::Error> @@ -132,3 +132,43 @@ fn test_custom_qs_config() {          assert!(s.common.remaining);      })  } + +#[test] +fn test_optional_query_none() { +    futures::executor::block_on(async { +        let req = axum::http::Request::builder() +            .uri("/test") +            .body(()) +            .unwrap(); +        let (mut req_parts, _) = req.into_parts(); + +        let OptionalQsQuery(s) = OptionalQsQuery::<Query>::from_request_parts(&mut req_parts, &()) +            .await +            .unwrap(); + +        assert!(s.is_none()); +    }) +} + +#[test] +fn test_optional_query_some() { +    futures::executor::block_on(async { +        let req = axum::http::Request::builder() +            .uri("/test?foo=1&bars%5B%5D=3&limit=100&offset=50&remaining=true") +            .extension(QsQueryConfig::new(5, false)) +            .body(()) +            .unwrap(); + +        let (mut req_parts, _) = req.into_parts(); +        let OptionalQsQuery(s) = OptionalQsQuery::<Query>::from_request_parts(&mut req_parts, &()) +            .await +            .unwrap(); + +        let query = s.unwrap(); +        assert_eq!(query.foo, 1); +        assert_eq!(query.bars, vec![3]); +        assert_eq!(query.common.limit, 100); +        assert_eq!(query.common.offset, 50); +        assert!(query.common.remaining); +    }) +} diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index 12c4a8c..2e79ef0 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -81,7 +81,7 @@ fn deserialize_struct() {          user_ids: vec![1, 2, 3, 4],      }; -    for config in vec![qs::Config::new(5, true), qs::Config::new(5, false)] { +    for config in [qs::Config::new(5, true), qs::Config::new(5, false)] {          // standard parameters          let rec_params: QueryParams = config              .deserialize_str( diff --git a/tests/test_warp.rs b/tests/test_warp.rs index 76bfd80..ca56ded 100644 --- a/tests/test_warp.rs +++ b/tests/test_warp.rs @@ -17,7 +17,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)] @@ -65,7 +65,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);      })  } @@ -99,6 +99,6 @@ 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);      })  }  | 
