aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/tests
diff options
context:
space:
mode:
authorVincent Prouillet2020-06-09 21:34:50 +0200
committerGitHub2020-06-09 21:34:50 +0200
commited5fab36d7f0cb8313dd13464f6f9bfe2bafcf05 (patch)
treef26f55834b833eba14a0e5ed1cce22bb45f946a4 /validator_derive/tests
parente052be5fdac051d005ab0e93c1016e4e8ac4ee00 (diff)
parentb83aba922a3d21091b036dcac2840e4ae62e9ebc (diff)
downloadvalidator-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.rs61
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());
+}