Skip to content

Commit 2c50ade

Browse files
committed
Add test for FederationSdlPrinter definition filtering
1 parent 39c3136 commit 2c50ade

File tree

4 files changed

+111
-4
lines changed

4 files changed

+111
-4
lines changed

graphql-java-support/src/test/java/com/apollographql/federation/graphqljava/FederationTest.java

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.apollographql.federation.graphqljava;
22

33
import graphql.ExecutionResult;
4+
import graphql.Scalars;
45
import graphql.schema.GraphQLFieldDefinition;
6+
import graphql.schema.GraphQLScalarType;
57
import graphql.schema.GraphQLSchema;
68
import graphql.schema.GraphQLType;
79
import graphql.schema.GraphQLUnionType;
@@ -29,7 +31,9 @@ class FederationTest {
2931
private final String interfacesSDL = TestUtils.readResource("schemas/interfaces.graphql");
3032
private final String isolatedSDL = TestUtils.readResource("schemas/isolated.graphql");
3133
private final String productSDL = TestUtils.readResource("schemas/product.graphql");
32-
private final String printerSDL = TestUtils.readResource("schemas/printer.graphql");
34+
private final String printerEmptySDL = TestUtils.readResource("schemas/printerEmpty.graphql");
35+
private final String printerFilterSDL = TestUtils.readResource("schemas/printerFilter.graphql");
36+
private final String printerFilterExpectedSDL = TestUtils.readResource("schemas/printerFilterExpected.graphql");
3337

3438
@Test
3539
void testEmpty() {
@@ -145,8 +149,8 @@ void testInterfacesAreCovered() {
145149
}
146150

147151
@Test
148-
void testPrinter() {
149-
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerSDL);
152+
void testPrinterEmpty() {
153+
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerEmptySDL);
150154
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
151155
.type("Interface1", typeWiring -> typeWiring
152156
.typeResolver(env -> null)
@@ -159,6 +163,41 @@ void testPrinter() {
159163
typeDefinitionRegistry,
160164
runtimeWiring
161165
);
162-
Assertions.assertEquals(printerSDL.trim(), new FederationSdlPrinter().print(graphQLSchema).trim());
166+
Assertions.assertEquals(printerEmptySDL.trim(), new FederationSdlPrinter().print(graphQLSchema).trim());
167+
}
168+
169+
@Test
170+
void testPrinterFilter() {
171+
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerFilterSDL);
172+
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
173+
.type("Interface1", typeWiring -> typeWiring
174+
.typeResolver(env -> null)
175+
)
176+
.type("Interface2", typeWiring -> typeWiring
177+
.typeResolver(env -> null)
178+
)
179+
.scalar(GraphQLScalarType.newScalar()
180+
.name("Scalar1")
181+
.coercing(Scalars.GraphQLString.getCoercing())
182+
.build()
183+
)
184+
.scalar(GraphQLScalarType.newScalar()
185+
.name("Scalar2")
186+
.coercing(Scalars.GraphQLString.getCoercing())
187+
.build()
188+
)
189+
.build();
190+
GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(
191+
typeDefinitionRegistry,
192+
runtimeWiring
193+
);
194+
Assertions.assertEquals(
195+
printerFilterExpectedSDL.trim(),
196+
new FederationSdlPrinter(FederationSdlPrinter.Options.defaultOptions()
197+
.includeScalarTypes(true)
198+
.includeDirectiveDefinitions(def -> !def.getName().endsWith("1"))
199+
.includeTypeDefinitions(def -> !def.getName().endsWith("1"))
200+
).print(graphQLSchema).trim()
201+
);
163202
}
164203
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
directive @directive1 on FIELD_DEFINITION
2+
3+
directive @directive2 on OBJECT
4+
5+
interface Interface1 {
6+
dummy: Enum2 @directive1
7+
}
8+
9+
interface Interface2 {
10+
dummy: Interface1 @directive1
11+
}
12+
13+
type Object1 @directive2 {
14+
dummy: Scalar2 @directive1
15+
}
16+
17+
type Object2 @directive2 {
18+
dummy: Object1 @directive1
19+
}
20+
21+
type Query {
22+
dummyEnum: Enum1 @directive1
23+
dummyScalar: Scalar1 @directive1
24+
}
25+
26+
enum Enum1 {
27+
DUMMY
28+
}
29+
30+
enum Enum2 {
31+
DUMMY
32+
}
33+
34+
scalar Scalar1
35+
36+
scalar Scalar2
37+
38+
input InputObject1 {
39+
dummy: String
40+
}
41+
42+
input InputObject2 {
43+
dummy: InputObject1
44+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
directive @directive2 on OBJECT
2+
3+
interface Interface2 {
4+
dummy: Interface1 @directive1
5+
}
6+
7+
type Object2 @directive2 {
8+
dummy: Object1 @directive1
9+
}
10+
11+
type Query {
12+
dummyEnum: Enum1 @directive1
13+
dummyScalar: Scalar1 @directive1
14+
}
15+
16+
enum Enum2 {
17+
DUMMY
18+
}
19+
20+
scalar Scalar2
21+
22+
input InputObject2 {
23+
dummy: InputObject1
24+
}

0 commit comments

Comments
 (0)