diff options
| author | Vincent Prouillet | 2020-06-09 21:34:50 +0200 |
|---|---|---|
| committer | GitHub | 2020-06-09 21:34:50 +0200 |
| commit | ed5fab36d7f0cb8313dd13464f6f9bfe2bafcf05 (patch) | |
| tree | f26f55834b833eba14a0e5ed1cce22bb45f946a4 /validator_derive/tests | |
| parent | e052be5fdac051d005ab0e93c1016e4e8ac4ee00 (diff) | |
| parent | b83aba922a3d21091b036dcac2840e4ae62e9ebc (diff) | |
| download | validator-ed5fab36d7f0cb8313dd13464f6f9bfe2bafcf05.tar.bz2 | |
Merge pull request #103 from ShadoySV/master
Required validation
Diffstat (limited to 'validator_derive/tests')
| -rw-r--r-- | validator_derive/tests/required.rs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/validator_derive/tests/required.rs b/validator_derive/tests/required.rs new file mode 100644 index 0000000..a073f28 --- /dev/null +++ b/validator_derive/tests/required.rs @@ -0,0 +1,61 @@ +#[macro_use] +extern crate validator_derive; + +use serde::Serialize; +use validator::Validate; + +#[derive(Serialize)] +struct ObjectRef { + id: i32, + name: String, +} + +#[derive(Serialize, Validate)] +struct CheckedObjectRef { + #[validate(range(min = 1))] + id: i32, + #[validate(length(min = 1))] + name: String, +} + +#[derive(Validate)] +struct Required { + #[validate(required)] + val: Option<ObjectRef>, +} + +#[derive(Validate)] +struct RequiredNested { + #[validate(required_nested)] + val: Option<CheckedObjectRef>, +} + +#[test] +fn can_validate_required() { + let s = Required { val: Some(ObjectRef { id: 0, name: String::new() }) }; + + assert!(s.validate().is_ok()); +} + +#[test] +fn can_validate_required_nested() { + let s = RequiredNested { + val: Some(CheckedObjectRef { id: 1, name: String::from("Reference representation") }), + }; + + assert!(s.validate().is_ok()); +} + +#[test] +fn none_fails_required() { + let s = Required { val: None }; + + assert!(s.validate().is_err()); +} + +#[test] +fn none_fails_required_nested() { + let s = RequiredNested { val: None }; + + assert!(s.validate().is_err()); +} |
