zod 0.1.0

Rust integraions with the `zod` typescript library.
Documentation
mod test_utils;
use zod::ZodType;

#[test]
fn serde_skip_enum_tuple_variant() {
    test_case! {
        #[derive(Debug, PartialEq, serde::Deserialize)]
        enum Test {
            A(#[serde(default)]String),
            B(usize),
        }
    }

    assert!(Test::schema().contains("z.string().optional()"));
    assert_eq!(
        Test::type_def(),
        "{ A: string | undefined } | { B: number }"
    );
}

//
#[test]
fn serde_skip_enum_struct_variant() {
    test_case! {
        #[derive(Debug, PartialEq, serde::Deserialize)]
        enum Test {
            A{
                #[serde(default)]
                s: String
            },
            B(usize),
        }
    }

    assert!(Test::schema().contains("z.string().optional()"));
    assert_eq!(
        Test::type_def(),
        "{ A: { s?: string | undefined } } | { B: number }"
    )
}
//
#[test]
fn serde_skip_enum_tuple_field() {
    test_case! {
        #[derive(Debug, PartialEq, serde::Deserialize)]
        enum Test {
            A(#[serde(default)] String, usize),
            B(usize),
        }
    }

    assert!(Test::schema().contains("z.string().optional()"));
}