@@ -6,13 +6,13 @@ import graphql.schema.GraphQLObjectType
66import graphql.schema.TypeResolver
77import spock.lang.Specification
88
9- import static graphql.Scalars.GraphQLInt
10- import static graphql.Scalars.GraphQLString
9+ import static SchemaValidationErrorType.ObjectDoesNotImplementItsInterfaces
10+ import static graphql.Scalars.*
11+ import static graphql.schema.GraphQLArgument.newArgument
1112import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition
1213import static graphql.schema.GraphQLInterfaceType.newInterface
1314import static graphql.schema.GraphQLList.list
1415import static graphql.schema.GraphQLNonNull.nonNull
15- import static SchemaValidationErrorType.ObjectDoesNotImplementItsInterfaces
1616
1717class ObjectsImplementInterfacesTest extends Specification {
1818
@@ -30,6 +30,19 @@ class ObjectsImplementInterfacesTest extends Specification {
3030 .field(newFieldDefinition(). name(" friends" ). type(list(GraphQLString )))
3131 .field(newFieldDefinition(). name(" age" ). type(GraphQLInt ))
3232 .field(newFieldDefinition(). name(" address" ). type(list(GraphQLString )))
33+
34+ .field(newFieldDefinition(). name(" argField1" ). type(GraphQLString )
35+ .argument(newArgument(). name(" arg1" ). type(GraphQLString ))
36+ .argument(newArgument(). name(" arg2" ). type(GraphQLInt ))
37+ .argument(newArgument(). name(" arg3" ). type(GraphQLBoolean ))
38+ .argument(newArgument(). name(" arg4" ). type(GraphQLString ). defaultValue(" ABC" ))
39+ )
40+
41+ .field(newFieldDefinition(). name(" argField2" ). type(GraphQLString )
42+ .argument(newArgument(). name(" arg1" ). type(GraphQLString ))
43+ .argument(newArgument(). name(" arg2" ). type(GraphQLInt ))
44+ .argument(newArgument(). name(" arg3" ). type(GraphQLBoolean ))
45+ )
3346 .typeResolver(typeResolver)
3447 .build()
3548
@@ -44,6 +57,18 @@ class ObjectsImplementInterfacesTest extends Specification {
4457 .field(newFieldDefinition(). name(" missing" ). type(list(GraphQLString )))
4558 .field(newFieldDefinition(). name(" age" ). type(GraphQLString ))
4659 .field(newFieldDefinition(). name(" address" ). type(list(nonNull(GraphQLString ))))
60+
61+ .field(newFieldDefinition(). name(" argField1" ). type(GraphQLString )
62+ .argument(newArgument(). name(" arg1" ). type(GraphQLInt ))
63+ .argument(newArgument(). name(" arg2" ). type(GraphQLInt ))
64+ .argument(newArgument(). name(" arg3" ). type(GraphQLInt ))
65+ .argument(newArgument(). name(" arg4" ). type(GraphQLString ). defaultValue(" XYZ" ))
66+ )
67+
68+ .field(newFieldDefinition(). name(" argField2" ). type(GraphQLString )
69+ .argument(newArgument(). name(" arg1" ). type(GraphQLString ))
70+ )
71+
4772 .build()
4873
4974 when :
@@ -53,12 +78,20 @@ class ObjectsImplementInterfacesTest extends Specification {
5378
5479 errorCollector. containsValidationError(ObjectDoesNotImplementItsInterfaces )
5580 def errors = errorCollector. getErrors()
56- errors. size() == 3
81+ errors. size() == 7
5782 errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
5883 " object type 'obj' does not implement interface 'Interface' because field 'friends' is missing" ))
5984 errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
6085 " object type 'obj' does not implement interface 'Interface' because field 'age' is defined as 'String' type and not as 'Int' type" ))
6186 errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
6287 " object type 'obj' does not implement interface 'Interface' because field 'address' is defined as '[String!]' type and not as '[String]' type" ))
88+ errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
89+ " object type 'obj' does not implement interface 'Interface' because field 'address' is defined as '[String!]' type and not as '[String]' type" ))
90+ errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
91+ " object type 'obj' does not implement interface 'Interface' because field 'argField1' argument 'arg1' is defined differently" ))
92+ errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
93+ " object type 'obj' does not implement interface 'Interface' because field 'argField1' argument 'arg1' is defined differently" ))
94+ errors. contains(new SchemaValidationError (ObjectDoesNotImplementItsInterfaces ,
95+ " object type 'obj' does not implement interface 'Interface' because field 'argField2' has a different number of arguments" ))
6396 }
6497}
0 commit comments