@@ -489,6 +489,82 @@ describe('ValidationEngine Validate Form', () => {
489
489
done ( ) ;
490
490
} ) ;
491
491
} ) ;
492
+
493
+ it ( 'Spec #9 => should pass validation when feeding viewModel with nested properties, fullname.firstName equals "john" and is validation required' , ( done ) => {
494
+ // Arrange
495
+ const validationEngine : ValidationEngine = new ValidationEngine ( ) ;
496
+ const viewModel = {
497
+ fullname : {
498
+ firstName : 'john' ,
499
+ } ,
500
+ } ;
501
+
502
+ // Act
503
+ validationEngine . addFieldValidation ( 'fullname.firstName' ,
504
+ ( value , vm ) : Promise < FieldValidationResult > => {
505
+ let isFieldInformed : boolean = ( value != null && value . length > 0 ) ;
506
+ let errorInfo : string = ( isFieldInformed ) ? "" : "Mandatory field" ;
507
+
508
+ const validationResult : FieldValidationResult = new FieldValidationResult ( ) ;
509
+ validationResult . type = "REQUIRED" ;
510
+ validationResult . succeeded = isFieldInformed ;
511
+ validationResult . errorMessage = errorInfo ;
512
+
513
+ return Promise . resolve ( validationResult ) ;
514
+ }
515
+ ) ;
516
+
517
+ validationEngine . validateForm ( viewModel )
518
+ . then ( ( formValidationResult : FormValidationResult ) => {
519
+ expect ( formValidationResult . succeeded ) . to . be . true ;
520
+
521
+ expect ( formValidationResult . fieldErrors ) . to . have . length ( 1 ) ;
522
+
523
+ expect ( formValidationResult . fieldErrors [ 0 ] . succeeded ) . to . be . true ;
524
+ expect ( formValidationResult . fieldErrors [ 0 ] . key ) . to . be . equal ( 'fullname.firstName' ) ;
525
+ expect ( formValidationResult . fieldErrors [ 0 ] . type ) . to . equal ( 'REQUIRED' ) ;
526
+ expect ( formValidationResult . fieldErrors [ 0 ] . errorMessage ) . to . equal ( '' ) ;
527
+ done ( ) ;
528
+ } ) ;
529
+ } ) ;
530
+
531
+ it ( 'Spec #10 => should fail validation when feeding viewModel with nested properties, fullname.firstName equals "" and is validation required' , ( done ) => {
532
+ // Arrange
533
+ const validationEngine : ValidationEngine = new ValidationEngine ( ) ;
534
+ const viewModel = {
535
+ fullname : {
536
+ firstName : '' ,
537
+ } ,
538
+ } ;
539
+
540
+ // Act
541
+ validationEngine . addFieldValidation ( 'fullname.firstName' ,
542
+ ( value , vm ) : Promise < FieldValidationResult > => {
543
+ let isFieldInformed : boolean = ( value != null && value . length > 0 ) ;
544
+ let errorInfo : string = ( isFieldInformed ) ? "" : "Mandatory field" ;
545
+
546
+ const validationResult : FieldValidationResult = new FieldValidationResult ( ) ;
547
+ validationResult . type = "REQUIRED" ;
548
+ validationResult . succeeded = isFieldInformed ;
549
+ validationResult . errorMessage = errorInfo ;
550
+
551
+ return Promise . resolve ( validationResult ) ;
552
+ }
553
+ ) ;
554
+
555
+ validationEngine . validateForm ( viewModel )
556
+ . then ( ( formValidationResult : FormValidationResult ) => {
557
+ expect ( formValidationResult . succeeded ) . to . be . false ;
558
+
559
+ expect ( formValidationResult . fieldErrors ) . to . have . length ( 1 ) ;
560
+
561
+ expect ( formValidationResult . fieldErrors [ 0 ] . succeeded ) . to . be . false ;
562
+ expect ( formValidationResult . fieldErrors [ 0 ] . key ) . to . be . equal ( 'fullname.firstName' ) ;
563
+ expect ( formValidationResult . fieldErrors [ 0 ] . type ) . to . equal ( 'REQUIRED' ) ;
564
+ expect ( formValidationResult . fieldErrors [ 0 ] . errorMessage ) . to . equal ( 'Mandatory field' ) ;
565
+ done ( ) ;
566
+ } ) ;
567
+ } ) ;
492
568
} ) ;
493
569
494
570
describe ( 'Group #2 => When calling validateForm and addFormValidation with async function' , ( ) => {
0 commit comments