Skip to content

Commit cc5a857

Browse files
committed
Moved UppercaseDirective class into groovy test case
1 parent e1f54fc commit cc5a857

File tree

5 files changed

+81
-18
lines changed

5 files changed

+81
-18
lines changed

src/test/groovy/com/coxautodev/graphql/tools/RelayConnectionSpec.groovy

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@ import graphql.GraphQL
44
import graphql.execution.AsyncExecutionStrategy
55
import graphql.relay.Connection
66
import graphql.relay.SimpleListConnection
7+
import graphql.schema.DataFetcher
8+
import graphql.schema.DataFetcherFactories
79
import graphql.schema.DataFetchingEnvironment
10+
import graphql.schema.GraphQLFieldDefinition
811
import graphql.schema.GraphQLSchema
12+
import graphql.schema.idl.SchemaDirectiveWiring
13+
import graphql.schema.idl.SchemaDirectiveWiringEnvironment
914
import spock.lang.Specification
1015

1116
class RelayConnectionSpec extends Specification {
@@ -51,7 +56,7 @@ class RelayConnectionSpec extends Specification {
5156
}
5257
''')
5358
.resolvers(new QueryResolver())
54-
.directive("uppercase", new RelayConnectionTest.UppercaseDirective())
59+
.directive("uppercase", new UppercaseDirective())
5560
.build()
5661
.makeExecutableSchema()
5762
GraphQL gql = GraphQL.newGraphQL(schema)
@@ -116,5 +121,21 @@ class RelayConnectionSpec extends Specification {
116121
}
117122
}
118123

124+
static class UppercaseDirective implements SchemaDirectiveWiring {
125+
126+
@Override
127+
GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment<GraphQLFieldDefinition> env) {
128+
GraphQLFieldDefinition field = env.getElement();
129+
DataFetcher dataFetcher = DataFetcherFactories.wrapDataFetcher(field.getDataFetcher(), {
130+
dataFetchingEnvironment, value ->
131+
if (value == null) {
132+
return null
133+
}
134+
return ((String) value).toUpperCase()
135+
})
136+
return field.transform({ builder -> builder.dataFetcher(dataFetcher) });
137+
}
138+
}
139+
119140

120141
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.coxautodev.graphql.tools;
2+
3+
import graphql.GraphQL;
4+
import graphql.execution.AsyncExecutionStrategy;
5+
import graphql.schema.GraphQLSchema;
6+
import groovy.lang.Closure;
7+
import org.junit.Test;
8+
9+
import java.util.HashMap;
10+
import java.util.concurrent.Future;
11+
12+
public class ReactiveTest {
13+
14+
@Test
15+
public void futureSucceeds() {
16+
GraphQLSchema schema = SchemaParser.newParser().file("Reactive.graphqls")
17+
.resolvers(new Query())
18+
.build()
19+
.makeExecutableSchema();
20+
21+
GraphQL gql = GraphQL.newGraphQL(schema)
22+
.queryExecutionStrategy(new AsyncExecutionStrategy())
23+
.build();
24+
Utils.assertNoGraphQlErrors(gql, new HashMap<>(), new Object(), new Closure<String>(null) {
25+
@Override
26+
public String call() {
27+
return "query { organization(organizationId: 1) { user { id } } }";
28+
}
29+
});
30+
}
31+
32+
static class Query implements GraphQLQueryResolver {
33+
Future<Organization> organization(int organizationid) {
34+
return null;
35+
}
36+
}
37+
38+
static class Organization {
39+
private User user;
40+
}
41+
42+
static class User {
43+
private Long id;
44+
private String name;
45+
}
46+
}

src/test/java/com/coxautodev/graphql/tools/RelayConnectionTest.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public void compiles() {
2222
.resolvers(new QueryResolver())
2323
.dictionary(User.class)
2424
.directive("connection", new RelayConnection())
25-
.directive("uppercase", new UppercaseDirective())
2625
.build()
2726
.makeExecutableSchema();
2827
}
@@ -50,19 +49,5 @@ public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment<GraphQLFi
5049

5150
}
5251

53-
static class UppercaseDirective implements SchemaDirectiveWiring {
5452

55-
@Override
56-
public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment<GraphQLFieldDefinition> env) {
57-
GraphQLFieldDefinition field = env.getElement();
58-
DataFetcher dataFetcher = DataFetcherFactories.wrapDataFetcher(field.getDataFetcher(), ((dataFetchingEnvironment, value) -> {
59-
if (value == null) {
60-
return null;
61-
}
62-
String uppercase = ((String) value).toUpperCase();
63-
return uppercase;
64-
}));
65-
return field.transform(builder -> builder.dataFetcher(dataFetcher));
66-
}
67-
}
6853
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
type Query {
2+
organization(organizationId: ID): Organization
3+
}
4+
5+
type Organization {
6+
user: User
7+
}
8+
9+
type User {
10+
id: ID
11+
name: String
12+
}

src/test/resources/RelayConnection.graphqls

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
directive @connection on FIELD_DEFINITION
2-
directive @uppercase on FIELD_DEFINITION
32

43
type Query {
54
users(first: Int, after: String): UserConnection @connection
@@ -17,7 +16,7 @@ type UserEdge {
1716

1817
type User {
1918
id: ID!
20-
name: String @uppercase
19+
name: String
2120
}
2221

2322
type PageInfo {

0 commit comments

Comments
 (0)