From b83aba922a3d21091b036dcac2840e4ae62e9ebc Mon Sep 17 00:00:00 2001 From: ShadoySV Date: Thu, 28 May 2020 13:39:31 +0300 Subject: required_nested implementation --- validator_derive/tests/required.rs | 44 ++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 7 deletions(-) (limited to 'validator_derive/tests') diff --git a/validator_derive/tests/required.rs b/validator_derive/tests/required.rs index 2f02b1b..a073f28 100644 --- a/validator_derive/tests/required.rs +++ b/validator_derive/tests/required.rs @@ -4,28 +4,58 @@ extern crate validator_derive; use serde::Serialize; use validator::Validate; -#[derive(Debug, Serialize)] +#[derive(Serialize)] struct ObjectRef { id: i32, name: String, } -#[derive(Debug, Validate)] -struct TestStruct { +#[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, } +#[derive(Validate)] +struct RequiredNested { + #[validate(required_nested)] + val: Option, +} + +#[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_some() { - let s = TestStruct { val: Some(ObjectRef { id: 0, name: String::new() }) }; +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_validate() { - let s = TestStruct { val: None }; +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()); } -- cgit v1.2.3