MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / test_validators

Function test_validators

aiscript-runtime/src/parser.rs:601–688  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

599
600 #[test]
601 fn test_validators() {
602 let input = r#"
603 route / {
604 post / {
605 @json
606 body {
607 @string(max_len=10)
608 @not(@string(min_len=5))
609 field: str,
610 @in(["a" ,"b", "c"])
611 x: str = "a",
612 @in([1, 2, 3])
613 y: int = 1,
614 @any(@in(["a", "b"]), @string(min_len=1))
615 z: str
616 }
617
618 return "hi";
619 }
620 }
621 "#;
622
623 let mut parser = Parser::new(input);
624 let result = parser.parse_route();
625 assert!(result.is_ok());
626
627 let route = result.unwrap();
628 let endpoint = &route.endpoints[0];
629
630 let field = &endpoint.body.fields[0];
631 assert_eq!(field.name, "field");
632 assert_eq!(field.validators.len(), 2);
633 assert_eq!(field.validators[0].name(), "@string");
634 assert_eq!(
635 field.validators[0]
636 .downcast_ref::<StringValidator>()
637 .unwrap()
638 .max_len,
639 Some(10)
640 );
641 assert_eq!(
642 field.validators[1]
643 .downcast_ref::<NotValidator<Box<dyn Validator>>>()
644 .unwrap()
645 .0
646 .downcast_ref::<StringValidator>()
647 .unwrap()
648 .min_len,
649 Some(5)
650 );
651
652 let field = &endpoint.body.fields[1];
653 assert_eq!(field.name, "x");
654 assert_eq!(field.default, Some(Value::from("a")));
655 assert_eq!(field.validators.len(), 1);
656 assert_eq!(
657 field.validators[0].downcast_ref::<InValidator>().unwrap().0,
658 vec![Value::from("a"), Value::from("b"), Value::from("c")]

Callers

nothing calls this directly

Calls 1

parse_routeMethod · 0.80

Tested by

no test coverage detected