@@ -33,6 +33,7 @@ import {
33
33
OrCondition ,
34
34
RuleEffect ,
35
35
SchemaBasedCondition ,
36
+ ValidateFunctionCondition ,
36
37
} from '../../src' ;
37
38
import { evalEnablement , evalVisibility } from '../../src/util/runtime' ;
38
39
@@ -491,6 +492,90 @@ test('evalEnablement disable valid case', (t) => {
491
492
t . is ( evalEnablement ( uischema , data , undefined , createAjv ( ) ) , false ) ;
492
493
} ) ;
493
494
495
+ // Add test case for ValidateFunctionCondition with evalEnablement (valid enable case)
496
+ test ( 'evalEnablement enable valid case based on ValidateFunctionCondition' , ( t ) => {
497
+ const condition : ValidateFunctionCondition = {
498
+ scope : '#/properties/ruleValue' ,
499
+ validate : ( data ) => data === 'bar' ,
500
+ } ;
501
+ const uischema : ControlElement = {
502
+ type : 'Control' ,
503
+ scope : '#/properties/value' ,
504
+ rule : {
505
+ effect : RuleEffect . ENABLE ,
506
+ condition : condition ,
507
+ } ,
508
+ } ;
509
+ const data = {
510
+ value : 'foo' ,
511
+ ruleValue : 'bar' ,
512
+ } ;
513
+ t . is ( evalEnablement ( uischema , data , undefined , createAjv ( ) ) , true ) ;
514
+ } ) ;
515
+
516
+ // Add test case for ValidateFunctionCondition with evalEnablement (invalid enable case)
517
+ test ( 'evalEnablement enable invalid case based on ValidateFunctionCondition' , ( t ) => {
518
+ const condition : ValidateFunctionCondition = {
519
+ scope : '#/properties/ruleValue' ,
520
+ validate : ( data ) => data === 'bar' ,
521
+ } ;
522
+ const uischema : ControlElement = {
523
+ type : 'Control' ,
524
+ scope : '#/properties/value' ,
525
+ rule : {
526
+ effect : RuleEffect . ENABLE ,
527
+ condition : condition ,
528
+ } ,
529
+ } ;
530
+ const data = {
531
+ value : 'foo' ,
532
+ ruleValue : 'foobar' ,
533
+ } ;
534
+ t . is ( evalEnablement ( uischema , data , undefined , createAjv ( ) ) , false ) ;
535
+ } ) ;
536
+
537
+ // Add test case for ValidateFunctionCondition with evalEnablement (valid disable case)
538
+ test ( 'evalEnablement disable valid case based on ValidateFunctionCondition' , ( t ) => {
539
+ const condition : ValidateFunctionCondition = {
540
+ scope : '#/properties/ruleValue' ,
541
+ validate : ( data ) => data === 'bar' ,
542
+ } ;
543
+ const uischema : ControlElement = {
544
+ type : 'Control' ,
545
+ scope : '#/properties/value' ,
546
+ rule : {
547
+ effect : RuleEffect . DISABLE ,
548
+ condition : condition ,
549
+ } ,
550
+ } ;
551
+ const data = {
552
+ value : 'foo' ,
553
+ ruleValue : 'bar' ,
554
+ } ;
555
+ t . is ( evalEnablement ( uischema , data , undefined , createAjv ( ) ) , false ) ;
556
+ } ) ;
557
+
558
+ // Add test case for ValidateFunctionCondition with evalEnablement (invalid disable case)
559
+ test ( 'evalEnablement disable invalid case based on ValidateFunctionCondition' , ( t ) => {
560
+ const condition : ValidateFunctionCondition = {
561
+ scope : '#/properties/ruleValue' ,
562
+ validate : ( data ) => data === 'bar' ,
563
+ } ;
564
+ const uischema : ControlElement = {
565
+ type : 'Control' ,
566
+ scope : '#/properties/value' ,
567
+ rule : {
568
+ effect : RuleEffect . DISABLE ,
569
+ condition : condition ,
570
+ } ,
571
+ } ;
572
+ const data = {
573
+ value : 'foo' ,
574
+ ruleValue : 'foobar' ,
575
+ } ;
576
+ t . is ( evalEnablement ( uischema , data , undefined , createAjv ( ) ) , true ) ;
577
+ } ) ;
578
+
494
579
test ( 'evalEnablement disable invalid case' , ( t ) => {
495
580
const leafCondition : LeafCondition = {
496
581
type : 'LEAF' ,
0 commit comments