use zod::{Zod, ZodType};
mod test_utils;
#[test]
fn serde_flatten_struct() {
test_case! {
#[derive(serde::Deserialize)]
struct Test {
#[serde(flatten)]
nested: Nested,
false_value: bool
}
#[derive(serde::Deserialize, serde::Serialize, Zod)]
#[zod(namespace = "Ns")]
struct Nested {
true_value: bool
}
#[derive(serde::Deserialize, serde::Serialize, Zod)]
#[zod(namespace = "Ns")]
struct Base{
false_value: bool
}
}
let s = serde_json::to_value(Test {
nested: Nested { true_value: true },
false_value: false,
})
.unwrap();
assert_eq!(
s,
serde_json::json!({"true_value": true, "false_value": false})
);
assert_eq!(
Test::schema(),
format!("{}.extend({})", Base::schema(), Nested::schema())
);
assert_eq!(
Test::type_def(),
format!("{} & Ns.Nested", Base::type_def())
);
assert_eq!(Test::inline().to_string(), "Ns.Test")
}