@@ -516,7 +516,7 @@ describe('visitWithTypeInfo', () => {
516
516
] ) ;
517
517
} ) ;
518
518
519
- it ( 'supports traversals of fragment arguments' , ( ) => {
519
+ it . only ( 'supports traversals of fragment arguments' , ( ) => {
520
520
const typeInfo = new TypeInfo ( testSchema ) ;
521
521
522
522
const ast = parse (
@@ -577,6 +577,10 @@ describe('visitWithTypeInfo', () => {
577
577
[ 'leave' , 'IntValue' , null , 'QueryRoot' , 'ID!' ] ,
578
578
[ 'leave' , 'Argument' , null , 'QueryRoot' , 'ID!' ] ,
579
579
[ 'leave' , 'FragmentSpread' , null , 'QueryRoot' , 'undefined' ] ,
580
+ [ 'enter' , 'FragmentSpread' , null , 'QueryRoot' , 'undefined' ] ,
581
+ [ 'enter' , 'Name' , 'Bar' , 'QueryRoot' , 'undefined' ] ,
582
+ [ 'leave' , 'Name' , 'Bar' , 'QueryRoot' , 'undefined' ] ,
583
+ [ 'leave' , 'FragmentSpread' , null , 'QueryRoot' , 'undefined' ] ,
580
584
[ 'leave' , 'SelectionSet' , null , 'QueryRoot' , 'undefined' ] ,
581
585
[ 'leave' , 'OperationDefinition' , null , 'QueryRoot' , 'undefined' ] ,
582
586
[ 'enter' , 'FragmentDefinition' , null , 'QueryRoot' , 'undefined' ] ,
@@ -722,4 +726,104 @@ describe('visitWithTypeInfo', () => {
722
726
[ 'leave' , 'Document' , null , 'undefined' , 'undefined' ] ,
723
727
] ) ;
724
728
} ) ;
729
+
730
+ it ( 'supports traversals of fragment arguments with default-value' , ( ) => {
731
+ const typeInfo = new TypeInfo ( testSchema ) ;
732
+
733
+ const ast = parse (
734
+ `
735
+ query {
736
+ ...Foo
737
+ }
738
+ fragment Foo(
739
+ $x: ID = 4
740
+ ) on QueryRoot {
741
+ human(id: $x) { name }
742
+ }
743
+ ` ,
744
+ { experimentalFragmentArguments : true } ,
745
+ ) ;
746
+
747
+ const visited : Array < any > = [ ] ;
748
+ visit (
749
+ ast ,
750
+ visitWithTypeInfo ( typeInfo , {
751
+ enter ( node ) {
752
+ const type = typeInfo . getType ( ) ;
753
+ const inputType = typeInfo . getInputType ( ) ;
754
+ visited . push ( [
755
+ 'enter' ,
756
+ node . kind ,
757
+ node . kind === 'Name' ? node . value : null ,
758
+ String ( type ) ,
759
+ String ( inputType ) ,
760
+ ] ) ;
761
+ } ,
762
+ leave ( node ) {
763
+ const type = typeInfo . getType ( ) ;
764
+ const inputType = typeInfo . getInputType ( ) ;
765
+ visited . push ( [
766
+ 'leave' ,
767
+ node . kind ,
768
+ node . kind === 'Name' ? node . value : null ,
769
+ String ( type ) ,
770
+ String ( inputType ) ,
771
+ ] ) ;
772
+ } ,
773
+ } ) ,
774
+ ) ;
775
+
776
+ expect ( visited ) . to . deep . equal ( [
777
+ [ 'enter' , 'Document' , null , 'undefined' , 'undefined' ] ,
778
+ [ 'enter' , 'OperationDefinition' , null , 'QueryRoot' , 'undefined' ] ,
779
+ [ 'enter' , 'SelectionSet' , null , 'QueryRoot' , 'undefined' ] ,
780
+ [ 'enter' , 'FragmentSpread' , null , 'QueryRoot' , 'undefined' ] ,
781
+ [ 'enter' , 'Name' , 'Foo' , 'QueryRoot' , 'undefined' ] ,
782
+ [ 'leave' , 'Name' , 'Foo' , 'QueryRoot' , 'undefined' ] ,
783
+ [ 'leave' , 'FragmentSpread' , null , 'QueryRoot' , 'undefined' ] ,
784
+ [ 'leave' , 'SelectionSet' , null , 'QueryRoot' , 'undefined' ] ,
785
+ [ 'leave' , 'OperationDefinition' , null , 'QueryRoot' , 'undefined' ] ,
786
+ [ 'enter' , 'FragmentDefinition' , null , 'QueryRoot' , 'undefined' ] ,
787
+ [ 'enter' , 'Name' , 'Foo' , 'QueryRoot' , 'undefined' ] ,
788
+ [ 'leave' , 'Name' , 'Foo' , 'QueryRoot' , 'undefined' ] ,
789
+ [ 'enter' , 'VariableDefinition' , null , 'QueryRoot' , 'ID' ] ,
790
+ [ 'enter' , 'Variable' , null , 'QueryRoot' , 'ID' ] ,
791
+ [ 'enter' , 'Name' , 'x' , 'QueryRoot' , 'ID' ] ,
792
+ [ 'leave' , 'Name' , 'x' , 'QueryRoot' , 'ID' ] ,
793
+ [ 'leave' , 'Variable' , null , 'QueryRoot' , 'ID' ] ,
794
+ [ 'enter' , 'NamedType' , null , 'QueryRoot' , 'ID' ] ,
795
+ [ 'enter' , 'Name' , 'ID' , 'QueryRoot' , 'ID' ] ,
796
+ [ 'leave' , 'Name' , 'ID' , 'QueryRoot' , 'ID' ] ,
797
+ [ 'leave' , 'NamedType' , null , 'QueryRoot' , 'ID' ] ,
798
+ [ 'enter' , 'IntValue' , null , 'QueryRoot' , 'ID' ] ,
799
+ [ 'leave' , 'IntValue' , null , 'QueryRoot' , 'ID' ] ,
800
+ [ 'leave' , 'VariableDefinition' , null , 'QueryRoot' , 'ID' ] ,
801
+ [ 'enter' , 'NamedType' , null , 'QueryRoot' , 'undefined' ] ,
802
+ [ 'enter' , 'Name' , 'QueryRoot' , 'QueryRoot' , 'undefined' ] ,
803
+ [ 'leave' , 'Name' , 'QueryRoot' , 'QueryRoot' , 'undefined' ] ,
804
+ [ 'leave' , 'NamedType' , null , 'QueryRoot' , 'undefined' ] ,
805
+ [ 'enter' , 'SelectionSet' , null , 'QueryRoot' , 'undefined' ] ,
806
+ [ 'enter' , 'Field' , null , 'Human' , 'undefined' ] ,
807
+ [ 'enter' , 'Name' , 'human' , 'Human' , 'undefined' ] ,
808
+ [ 'leave' , 'Name' , 'human' , 'Human' , 'undefined' ] ,
809
+ [ 'enter' , 'Argument' , null , 'Human' , 'ID' ] ,
810
+ [ 'enter' , 'Name' , 'id' , 'Human' , 'ID' ] ,
811
+ [ 'leave' , 'Name' , 'id' , 'Human' , 'ID' ] ,
812
+ [ 'enter' , 'Variable' , null , 'Human' , 'ID' ] ,
813
+ [ 'enter' , 'Name' , 'x' , 'Human' , 'ID' ] ,
814
+ [ 'leave' , 'Name' , 'x' , 'Human' , 'ID' ] ,
815
+ [ 'leave' , 'Variable' , null , 'Human' , 'ID' ] ,
816
+ [ 'leave' , 'Argument' , null , 'Human' , 'ID' ] ,
817
+ [ 'enter' , 'SelectionSet' , null , 'Human' , 'undefined' ] ,
818
+ [ 'enter' , 'Field' , null , 'String' , 'undefined' ] ,
819
+ [ 'enter' , 'Name' , 'name' , 'String' , 'undefined' ] ,
820
+ [ 'leave' , 'Name' , 'name' , 'String' , 'undefined' ] ,
821
+ [ 'leave' , 'Field' , null , 'String' , 'undefined' ] ,
822
+ [ 'leave' , 'SelectionSet' , null , 'Human' , 'undefined' ] ,
823
+ [ 'leave' , 'Field' , null , 'Human' , 'undefined' ] ,
824
+ [ 'leave' , 'SelectionSet' , null , 'QueryRoot' , 'undefined' ] ,
825
+ [ 'leave' , 'FragmentDefinition' , null , 'QueryRoot' , 'undefined' ] ,
826
+ [ 'leave' , 'Document' , null , 'undefined' , 'undefined' ] ,
827
+ ] ) ;
828
+ } ) ;
725
829
} ) ;
0 commit comments