Skip to content

Commit b457c12

Browse files
committed
Fixed unit tests after upgrading to 10.0 and added one to reproduce #168
1 parent 67aefa7 commit b457c12

File tree

3 files changed

+77
-7
lines changed

3 files changed

+77
-7
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import graphql.execution.ExecutionId
88
import graphql.execution.ExecutionStrategy
99
import graphql.execution.ExecutionStrategyParameters
1010
import graphql.execution.instrumentation.SimpleInstrumentation
11+
import graphql.language.BooleanValue
1112
import graphql.language.FieldDefinition
1213
import graphql.language.InputValueDefinition
1314
import graphql.language.NonNullType
@@ -37,7 +38,7 @@ class MethodFieldResolverDataFetcherSpec extends Specification {
3738

3839
def "data fetcher throws exception if resolver has too few arguments"() {
3940
when:
40-
createFetcher("active", [new InputValueDefinition("doesNotExist")], new GraphQLQueryResolver() {
41+
createFetcher("active", [new InputValueDefinition("doesNotExist", new TypeName("Boolean"))], new GraphQLQueryResolver() {
4142
boolean active() { true }
4243
})
4344

@@ -143,7 +144,7 @@ class MethodFieldResolverDataFetcherSpec extends Specification {
143144
def "data fetcher marshalls input object if required"() {
144145
setup:
145146
def name = "correct name"
146-
def resolver = createFetcher("active", [new InputValueDefinition("input")], new GraphQLQueryResolver() {
147+
def resolver = createFetcher("active", [new InputValueDefinition("input", new TypeName("InputClass"))], new GraphQLQueryResolver() {
147148
boolean active(InputClass input) {
148149
input instanceof InputClass && input.name == name
149150
}
@@ -156,7 +157,7 @@ class MethodFieldResolverDataFetcherSpec extends Specification {
156157
def "data fetcher doesn't marshall input object if not required"() {
157158
setup:
158159
def name = "correct name"
159-
def resolver = createFetcher("active", [new InputValueDefinition("input")], new GraphQLQueryResolver() {
160+
def resolver = createFetcher("active", [new InputValueDefinition("input", new TypeName("Map"))], new GraphQLQueryResolver() {
160161
boolean active(Map input) {
161162
input instanceof Map && input.name == name
162163
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class SchemaParserBuilderSpec extends Specification {
2121

2222
where:
2323
schema | error
24-
"invalid" | "0,1:7='invalid'"
25-
"type Query {\ninvalid!\n}" | "4,21:21='!'"
24+
"invalid" | "0,0:6='invalid'"
25+
"type Query {\ninvalid!\n}" | "4,20:20='!'"
2626
}
2727
}

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

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@ class SchemaParserSpec extends Specification {
2525

2626
def "builder throws FileNotFound exception when file is missing"() {
2727
when:
28-
builder.file("/404")
28+
builder.file("/404").build()
2929

3030
then:
3131
thrown(FileNotFoundException)
3232
}
3333

3434
def "builder doesn't throw FileNotFound exception when file is present"() {
3535
when:
36-
builder.file("test.graphqls")
36+
SchemaParser.newParser().file("test.graphqls")
37+
.resolvers(new GraphQLQueryResolver() { String getId() { "1" }})
38+
.build()
3739

3840
then:
3941
noExceptionThrown()
@@ -296,8 +298,75 @@ class SchemaParserSpec extends Specification {
296298
sourceLocation.column == 5
297299
sourceLocation.sourceName == "test.graphqls"
298300
}
301+
302+
def "support enum types if only used as input type"() {
303+
when:
304+
SchemaParser.newParser().schemaString('''\
305+
type Query { test: Boolean }
306+
307+
type Mutation {
308+
save(input: SaveInput!): Boolean
309+
}
310+
311+
input SaveInput {
312+
type: EnumType!
313+
}
314+
315+
enum EnumType {
316+
TEST
317+
}
318+
'''.stripIndent())
319+
.resolvers(new GraphQLMutationResolver() {
320+
boolean save(SaveInput input) { false }
321+
322+
class SaveInput {
323+
EnumType type;
324+
}
325+
326+
}, new GraphQLQueryResolver() {
327+
boolean test() { false }
328+
})
329+
.dictionary(EnumType.class)
330+
.build()
331+
.makeExecutableSchema()
332+
333+
then:
334+
noExceptionThrown()
335+
}
336+
337+
def "support enum types if only used in input Map"() {
338+
when:
339+
SchemaParser.newParser().schemaString('''\
340+
type Query { test: Boolean }
341+
342+
type Mutation {
343+
save(input: SaveInput!): Boolean
344+
}
345+
346+
input SaveInput {
347+
type: EnumType!
348+
}
349+
350+
enum EnumType {
351+
TEST
352+
}
353+
'''.stripIndent())
354+
.resolvers(new GraphQLMutationResolver() {
355+
boolean save(Map input) { false }
356+
}, new GraphQLQueryResolver() {
357+
boolean test() { false }
358+
})
359+
.dictionary(EnumType.class)
360+
.build()
361+
.makeExecutableSchema()
362+
363+
then:
364+
noExceptionThrown()
365+
}
299366
}
300367

368+
enum EnumType { TEST }
369+
301370
class QueryWithIdResolver implements GraphQLQueryResolver {
302371
String getId() { null }
303372
}

0 commit comments

Comments
 (0)