use zod::ZodType;
mod test_utils;
use test_utils::*;
#[test]
fn serde_default_named_struct_field() {
test_case! {
#[derive(serde::Deserialize)]
struct Test {
#[serde(default)]
s: String,
num: usize,
}
}
assert!(Test::schema().contains("z.string().optional()"));
assert_eq!(Test::type_def(), "{s?: string | undefined,\nnum: number}")
}
#[test]
fn serde_default_tuple_struct_field() {
test_case! {
#[derive(serde::Deserialize)]
struct Test(#[serde(default)] String);
}
assert!(Test::schema().contains("z.string().optional()"));
assert_eq!(Test::type_def(), "string | undefined")
}
#[test]
fn flatten() {
test_case! {
#[derive(Debug, serde::Deserialize, PartialEq)]
struct Test(#[serde(default)]usize);
}
assert_eq!(Test::schema(), optional(usize::schema()));
assert_eq!(Test::type_def(), "number | undefined");
assert_eq!(Test::inline().to_string(), "Ns.Test")
}