vale 0.0.0

A simple entity validation library
Documentation
use vale::Validate;

#[derive(Validate)]
struct Struct {
    #[validate(gt(10))]
    value: u32,
    #[validate(len_gt(3))]
    string: String,
    #[validate(eq(true))]
    boolean: bool,
    #[validate(with(is_even))]
    even_value: i32,
    #[validate(trim, len_lt(10), to_lower_case)]
    transformer: String,
    #[validate(len_lt(10), trim)]
    transfailer: String,
}

fn is_even(arg: &mut i32) -> bool {
    *arg % 2 == 0
}

fn valid_struct() -> Struct {
    Struct {
        value: 12,
        string: "String".to_string(),
        boolean: true,
        even_value: 2,
        transformer: "hello".to_string(),
        transfailer: "hello".to_string(),
    }
}

#[test]
fn test_valid() {
    let mut s = valid_struct();
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "[\"Failed to validate field `value`, value too low\"]")]
fn test_too_small() {
    let mut s = valid_struct();
    s.value = 8;
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "[\"Failed to validate field `string`, value too short\"]")]
fn test_too_short() {
    let mut s = valid_struct();
    s.string = "hi".to_string();
    s.validate().unwrap();
}

#[test]
#[should_panic(expected = "[\"Failed to validate field `boolean`, value incorrect\"]")]
fn test_too_false() {
    let mut s = valid_struct();
    s.boolean = false;
    s.validate().unwrap();
}

#[test]
fn transform() {
    let mut s = valid_struct();
    s.transformer = "     CAST ME       ".to_string();
    s.validate().unwrap();
    assert_eq!(s.transformer, "cast me");
}

#[test]
#[should_panic(expected = "[\"Failed to validate field `transfailer`, value too long\"]")]
fn transfail() {
    let mut s = valid_struct();
    s.transfailer = "     CAST ME       ".to_string();
    s.validate().unwrap();
    assert_eq!(s.transformer, "cast me");
}