Skip to content

Commit

Permalink
Add test for FederationSdlPrinter definition filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
sachindshinde committed Mar 26, 2020
1 parent 39c3136 commit 2c50ade
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.apollographql.federation.graphqljava;

import graphql.ExecutionResult;
import graphql.Scalars;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLScalarType;
import graphql.schema.GraphQLSchema;
import graphql.schema.GraphQLType;
import graphql.schema.GraphQLUnionType;
Expand Down Expand Up @@ -29,7 +31,9 @@ class FederationTest {
private final String interfacesSDL = TestUtils.readResource("schemas/interfaces.graphql");
private final String isolatedSDL = TestUtils.readResource("schemas/isolated.graphql");
private final String productSDL = TestUtils.readResource("schemas/product.graphql");
private final String printerSDL = TestUtils.readResource("schemas/printer.graphql");
private final String printerEmptySDL = TestUtils.readResource("schemas/printerEmpty.graphql");
private final String printerFilterSDL = TestUtils.readResource("schemas/printerFilter.graphql");
private final String printerFilterExpectedSDL = TestUtils.readResource("schemas/printerFilterExpected.graphql");

@Test
void testEmpty() {
Expand Down Expand Up @@ -145,8 +149,8 @@ void testInterfacesAreCovered() {
}

@Test
void testPrinter() {
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerSDL);
void testPrinterEmpty() {
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerEmptySDL);
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
.type("Interface1", typeWiring -> typeWiring
.typeResolver(env -> null)
Expand All @@ -159,6 +163,41 @@ void testPrinter() {
typeDefinitionRegistry,
runtimeWiring
);
Assertions.assertEquals(printerSDL.trim(), new FederationSdlPrinter().print(graphQLSchema).trim());
Assertions.assertEquals(printerEmptySDL.trim(), new FederationSdlPrinter().print(graphQLSchema).trim());
}

@Test
void testPrinterFilter() {
TypeDefinitionRegistry typeDefinitionRegistry = new SchemaParser().parse(printerFilterSDL);
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
.type("Interface1", typeWiring -> typeWiring
.typeResolver(env -> null)
)
.type("Interface2", typeWiring -> typeWiring
.typeResolver(env -> null)
)
.scalar(GraphQLScalarType.newScalar()
.name("Scalar1")
.coercing(Scalars.GraphQLString.getCoercing())
.build()
)
.scalar(GraphQLScalarType.newScalar()
.name("Scalar2")
.coercing(Scalars.GraphQLString.getCoercing())
.build()
)
.build();
GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(
typeDefinitionRegistry,
runtimeWiring
);
Assertions.assertEquals(
printerFilterExpectedSDL.trim(),
new FederationSdlPrinter(FederationSdlPrinter.Options.defaultOptions()
.includeScalarTypes(true)
.includeDirectiveDefinitions(def -> !def.getName().endsWith("1"))
.includeTypeDefinitions(def -> !def.getName().endsWith("1"))
).print(graphQLSchema).trim()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
directive @directive1 on FIELD_DEFINITION

directive @directive2 on OBJECT

interface Interface1 {
dummy: Enum2 @directive1
}

interface Interface2 {
dummy: Interface1 @directive1
}

type Object1 @directive2 {
dummy: Scalar2 @directive1
}

type Object2 @directive2 {
dummy: Object1 @directive1
}

type Query {
dummyEnum: Enum1 @directive1
dummyScalar: Scalar1 @directive1
}

enum Enum1 {
DUMMY
}

enum Enum2 {
DUMMY
}

scalar Scalar1

scalar Scalar2

input InputObject1 {
dummy: String
}

input InputObject2 {
dummy: InputObject1
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
directive @directive2 on OBJECT

interface Interface2 {
dummy: Interface1 @directive1
}

type Object2 @directive2 {
dummy: Object1 @directive1
}

type Query {
dummyEnum: Enum1 @directive1
dummyScalar: Scalar1 @directive1
}

enum Enum2 {
DUMMY
}

scalar Scalar2

input InputObject2 {
dummy: InputObject1
}

0 comments on commit 2c50ade

Please sign in to comment.