serde_valid 2.0.1

JSON Schema based validation tool using serde.
Documentation
use serde_json::json;
use serde_valid::Validate;

#[test]
fn struct_unnamed_fields_newtype_is_ok() {
    #[derive(Validate)]
    struct TestStruct(#[validate(multiple_of = 5)] i32);

    let s = TestStruct(15);
    assert!(s.validate().is_ok());
}

#[test]
fn struct_unnamed_fields_newtype_is_err() {
    #[derive(Validate)]
    struct TestStruct(#[validate(multiple_of = 5)] i32);

    let s = TestStruct(13);
    let err = s.validate().unwrap_err();

    assert_eq!(
        serde_json::from_str::<serde_json::Value>(&err.to_string()).unwrap(),
        json!({
            "errors": ["The value must be multiple of `5`."]
        })
    );
}

#[test]
fn struct_unnamed_fields_is_ok() {
    #[derive(Validate)]
    struct TestStruct(
        #[validate(multiple_of = 5)] i32,
        #[validate(min_length = 1)] &'static str,
    );

    let s = TestStruct(15, "ababa");
    assert!(s.validate().is_ok());
}

#[test]
fn struct_unnamed_fields_is_err() {
    #[derive(Validate)]
    struct TestStruct(
        #[validate(multiple_of = 5)] i32,
        #[validate(min_length = 8)] &'static str,
    );

    let s = TestStruct(15, "abcde");
    let err = s.validate().unwrap_err();

    assert_eq!(
        serde_json::from_str::<serde_json::Value>(&err.to_string()).unwrap(),
        json!({
            "errors": [],
            "items": {
                "1": {
                    "errors": ["The length of the value must be `>= 8`."]
                }
            }
        })
    );
}