Skip to content

Commit 1190b79

Browse files
committed
add test for visiting default value
1 parent 2fff4bd commit 1190b79

File tree

1 file changed

+105
-1
lines changed

1 file changed

+105
-1
lines changed

src/utilities/__tests__/TypeInfo-test.ts

Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ describe('visitWithTypeInfo', () => {
516516
]);
517517
});
518518

519-
it('supports traversals of fragment arguments', () => {
519+
it.only('supports traversals of fragment arguments', () => {
520520
const typeInfo = new TypeInfo(testSchema);
521521

522522
const ast = parse(
@@ -577,6 +577,10 @@ describe('visitWithTypeInfo', () => {
577577
['leave', 'IntValue', null, 'QueryRoot', 'ID!'],
578578
['leave', 'Argument', null, 'QueryRoot', 'ID!'],
579579
['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'],
580584
['leave', 'SelectionSet', null, 'QueryRoot', 'undefined'],
581585
['leave', 'OperationDefinition', null, 'QueryRoot', 'undefined'],
582586
['enter', 'FragmentDefinition', null, 'QueryRoot', 'undefined'],
@@ -722,4 +726,104 @@ describe('visitWithTypeInfo', () => {
722726
['leave', 'Document', null, 'undefined', 'undefined'],
723727
]);
724728
});
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+
});
725829
});

0 commit comments

Comments
 (0)