diff options
author | 2021-05-15 14:16:26 -0700 | |
---|---|---|
committer | 2021-05-15 14:16:26 -0700 | |
commit | c9de25aa4e16d8352329c3d05b557af9cb9ab651 (patch) | |
tree | 31c82aada290e896135596704523ed1a3c6372b1 /src | |
parent | e0d25df23fac6e53c1a9962ecfdc730d762915bc (diff) | |
download | notion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.tar.gz notion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.tar.zst notion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.zip |
adding serialize to true
Diffstat (limited to 'src')
-rw-r--r-- | src/models/search.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/models/search.rs b/src/models/search.rs index 7b14aa2..7cd23dd 100644 --- a/src/models/search.rs +++ b/src/models/search.rs @@ -1,5 +1,5 @@ use crate::models::paging::Paging; -use serde::{Deserialize, Serialize}; +use serde::{Deserialize, Serialize, Serializer}; #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)] #[serde(rename_all = "snake_case")] @@ -60,10 +60,19 @@ pub enum TextCondition { DoesNotContain(String), StartsWith(String), EndsWith(String), + #[serde(serialize_with = "serialize_to_true")] IsEmpty, + #[serde(serialize_with = "serialize_to_true")] IsNotEmpty, } +fn serialize_to_true<S>(serializer: S) -> Result<S::Ok, S::Error> +where + S: Serializer, +{ + serializer.serialize_bool(true) +} + #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)] #[serde(rename_all = "lowercase")] pub enum PropertyCondition { @@ -144,5 +153,33 @@ mod tests { Ok(()) } + + #[test] + fn text_property_contains() -> Result<(), Box<dyn std::error::Error>> { + let json = serde_json::to_string(&FilterCondition { + property: "Name".to_string(), + condition: Text(TextCondition::Contains("Test".to_string())), + })?; + assert_eq!( + dbg!(json), + r#"{"property":"Name","text":{"contains":"Test"}}"# + ); + + Ok(()) + } + + #[test] + fn text_property_is_empty() -> Result<(), Box<dyn std::error::Error>> { + let json = serde_json::to_string(&FilterCondition { + property: "Name".to_string(), + condition: Text(TextCondition::IsEmpty), + })?; + assert_eq!( + dbg!(json), + r#"{"property":"Name","text":{"is_empty":true}}"# + ); + + Ok(()) + } } } |