@@ -13,6 +13,7 @@ import {
13
13
isFailureActionElement ,
14
14
isFailureActionCriteriaElement ,
15
15
isCriterionElement ,
16
+ isReferenceElement ,
16
17
WorkflowsSpecification1Element ,
17
18
WorkflowsSpecElement ,
18
19
InfoElement ,
@@ -24,6 +25,7 @@ import {
24
25
FailureActionElement ,
25
26
FailureActionCriteriaElement ,
26
27
CriterionElement ,
28
+ ReferenceElement ,
27
29
} from '../src' ;
28
30
29
31
describe ( 'predicates' , function ( ) {
@@ -634,4 +636,57 @@ describe('predicates', function () {
634
636
assert . isFalse ( isFailureActionElement ( FailureActionElementSwan ) ) ;
635
637
} ) ;
636
638
} ) ;
639
+
640
+ context ( 'isReferenceElement' , function ( ) {
641
+ context ( 'given ReferenceElement instance value' , function ( ) {
642
+ specify ( 'should return true' , function ( ) {
643
+ const element = new ReferenceElement ( ) ;
644
+
645
+ assert . isTrue ( isReferenceElement ( element ) ) ;
646
+ } ) ;
647
+ } ) ;
648
+
649
+ context ( 'given subtype instance value' , function ( ) {
650
+ specify ( 'should return true' , function ( ) {
651
+ class ReferenceSubElement extends ReferenceElement { }
652
+
653
+ assert . isTrue ( isReferenceElement ( new ReferenceSubElement ( ) ) ) ;
654
+ } ) ;
655
+ } ) ;
656
+
657
+ context ( 'given non ReferenceElement instance value' , function ( ) {
658
+ specify ( 'should return false' , function ( ) {
659
+ assert . isFalse ( isReferenceElement ( 1 ) ) ;
660
+ assert . isFalse ( isReferenceElement ( null ) ) ;
661
+ assert . isFalse ( isReferenceElement ( undefined ) ) ;
662
+ assert . isFalse ( isReferenceElement ( { } ) ) ;
663
+ assert . isFalse ( isReferenceElement ( [ ] ) ) ;
664
+ assert . isFalse ( isReferenceElement ( 'string' ) ) ;
665
+ } ) ;
666
+ } ) ;
667
+
668
+ specify ( 'should support duck-typing' , function ( ) {
669
+ const referenceElementDuck = {
670
+ _storedElement : 'reference' ,
671
+ _content : [ ] ,
672
+ primitive ( ) {
673
+ return 'object' ;
674
+ } ,
675
+ get element ( ) {
676
+ return this . _storedElement ;
677
+ } ,
678
+ } ;
679
+
680
+ const referenceElementSwan = {
681
+ _storedElement : undefined ,
682
+ _content : undefined ,
683
+ primitive ( ) {
684
+ return 'swan' ;
685
+ } ,
686
+ } ;
687
+
688
+ assert . isTrue ( isReferenceElement ( referenceElementDuck ) ) ;
689
+ assert . isFalse ( isReferenceElement ( referenceElementSwan ) ) ;
690
+ } ) ;
691
+ } ) ;
637
692
} ) ;
0 commit comments