@@ -418,6 +418,49 @@ describe('Visitor', () => {
418
418
] ) ;
419
419
} ) ;
420
420
421
+ it ( 'visit nodes with unknown kinds but does not traverse deeper' , ( ) => {
422
+ const customAST = parse ( '{ a }' ) ;
423
+ // $FlowExpectedError[prop-missing]
424
+ customAST . definitions [ 0 ] . selectionSet . selections . push ( {
425
+ kind : 'CustomField' ,
426
+ name : { kind : 'Name' , value : 'NamedNodeToBeSkipped' } ,
427
+ selectionSet : {
428
+ kind : 'SelectionSet' ,
429
+ selections : [
430
+ {
431
+ kind : 'CustomField' ,
432
+ name : { kind : 'Name' , value : 'NamedNodeToBeSkipped' } ,
433
+ } ,
434
+ ] ,
435
+ } ,
436
+ } ) ;
437
+
438
+ const visited = [ ] ;
439
+ visit ( customAST , {
440
+ enter ( node ) {
441
+ visited . push ( [ 'enter' , node . kind , getValue ( node ) ] ) ;
442
+ } ,
443
+ leave ( node ) {
444
+ visited . push ( [ 'leave' , node . kind , getValue ( node ) ] ) ;
445
+ } ,
446
+ } ) ;
447
+
448
+ expect ( visited ) . to . deep . equal ( [
449
+ [ 'enter' , 'Document' , undefined ] ,
450
+ [ 'enter' , 'OperationDefinition' , undefined ] ,
451
+ [ 'enter' , 'SelectionSet' , undefined ] ,
452
+ [ 'enter' , 'Field' , undefined ] ,
453
+ [ 'enter' , 'Name' , 'a' ] ,
454
+ [ 'leave' , 'Name' , 'a' ] ,
455
+ [ 'leave' , 'Field' , undefined ] ,
456
+ [ 'enter' , 'CustomField' , undefined ] ,
457
+ [ 'leave' , 'CustomField' , undefined ] ,
458
+ [ 'leave' , 'SelectionSet' , undefined ] ,
459
+ [ 'leave' , 'OperationDefinition' , undefined ] ,
460
+ [ 'leave' , 'Document' , undefined ] ,
461
+ ] ) ;
462
+ } ) ;
463
+
421
464
it ( 'Legacy: visits variables defined in fragments' , ( ) => {
422
465
const ast = parse ( 'fragment a($v: Boolean = false) on t { f }' , {
423
466
noLocation : true ,
@@ -845,56 +888,6 @@ describe('Visitor', () => {
845
888
] ) ;
846
889
} ) ;
847
890
848
- describe ( 'Support for custom AST nodes' , ( ) => {
849
- const customAST = parse ( '{ a }' ) ;
850
- ( customAST : any ) . definitions [ 0 ] . selectionSet . selections . push ( {
851
- kind : 'CustomField' ,
852
- name : {
853
- kind : 'Name' ,
854
- value : 'b' ,
855
- } ,
856
- selectionSet : {
857
- kind : 'SelectionSet' ,
858
- selections : [
859
- {
860
- kind : 'CustomField' ,
861
- name : {
862
- kind : 'Name' ,
863
- value : 'c' ,
864
- } ,
865
- } ,
866
- ] ,
867
- } ,
868
- } ) ;
869
-
870
- it ( 'does not traverse unknown node kinds' , ( ) => {
871
- const visited = [ ] ;
872
- visit ( customAST , {
873
- enter ( node ) {
874
- visited . push ( [ 'enter' , node . kind , getValue ( node ) ] ) ;
875
- } ,
876
- leave ( node ) {
877
- visited . push ( [ 'leave' , node . kind , getValue ( node ) ] ) ;
878
- } ,
879
- } ) ;
880
-
881
- expect ( visited ) . to . deep . equal ( [
882
- [ 'enter' , 'Document' , undefined ] ,
883
- [ 'enter' , 'OperationDefinition' , undefined ] ,
884
- [ 'enter' , 'SelectionSet' , undefined ] ,
885
- [ 'enter' , 'Field' , undefined ] ,
886
- [ 'enter' , 'Name' , 'a' ] ,
887
- [ 'leave' , 'Name' , 'a' ] ,
888
- [ 'leave' , 'Field' , undefined ] ,
889
- [ 'enter' , 'CustomField' , undefined ] ,
890
- [ 'leave' , 'CustomField' , undefined ] ,
891
- [ 'leave' , 'SelectionSet' , undefined ] ,
892
- [ 'leave' , 'OperationDefinition' , undefined ] ,
893
- [ 'leave' , 'Document' , undefined ] ,
894
- ] ) ;
895
- } ) ;
896
- } ) ;
897
-
898
891
describe ( 'visitInParallel' , ( ) => {
899
892
// Note: nearly identical to the above test of the same test but
900
893
// using visitInParallel.
0 commit comments