Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.

Commit bda546e

Browse files
henryqdineenandimarek
authored andcommitted
test coverage for multiple interfaces
1 parent 9716190 commit bda546e

File tree

4 files changed

+40
-11
lines changed

4 files changed

+40
-11
lines changed

src/main/java/graphql/language/AstPrinter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ private static NodePrinter<ObjectTypeDefinition> objectTypeDefinition() {
281281
out.printf("%s", spaced(
282282
"type",
283283
node.getName(),
284-
wrap("implements ", join(node.getImplements(), ", "), ""),
284+
wrap("implements ", join(node.getImplements(), " & "), ""),
285285
directives(node.getDirectives()),
286286
block(node.getFieldDefinitions())
287287
));

src/test/groovy/graphql/language/AstPrinterTest.groovy

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,19 @@ interface Character {
5151
appearsIn: [Episode]!
5252
}
5353
54-
type Human implements Character {
54+
interface Node {
55+
id: ID!
56+
}
57+
58+
type Human implements Character & Node {
5559
id: ID!
5660
name: String!
5761
friends: [Character]
5862
appearsIn: [Episode]!
5963
homePlanet: String
6064
}
6165
62-
type Droid implements Character {
66+
type Droid implements Character & Node {
6367
id: ID!
6468
name: String!
6569
friends: [Character]
@@ -69,7 +73,7 @@ type Droid implements Character {
6973
7074
union SearchResult = Human | Droid | Starship
7175
72-
type Review {
76+
type Review implements Node {
7377
id: ID!
7478
stars: Int!
7579
commentary: String
@@ -122,15 +126,19 @@ interface Character {
122126
appearsIn: [Episode]!
123127
}
124128
125-
type Human implements Character {
129+
interface Node {
130+
id: ID!
131+
}
132+
133+
type Human implements Character & Node {
126134
id: ID!
127135
name: String!
128136
friends: [Character]
129137
appearsIn: [Episode]!
130138
homePlanet: String
131139
}
132140
133-
type Droid implements Character {
141+
type Droid implements Character & Node {
134142
id: ID!
135143
name: String!
136144
friends: [Character]
@@ -140,7 +148,7 @@ type Droid implements Character {
140148
141149
union SearchResult = Human | Droid | Starship
142150
143-
type Review {
151+
type Review implements Node {
144152
id: ID!
145153
stars: Int!
146154
commentary: String

src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class SchemaPrinterTest extends Specification {
4040
GraphQLSchema starWarsSchema() {
4141
def wiring = newRuntimeWiring()
4242
.type("Character", { type -> type.typeResolver(resolver) } as UnaryOperator<TypeRuntimeWiring.Builder>)
43+
.type("Node", { type -> type.typeResolver(resolver) } as UnaryOperator<TypeRuntimeWiring.Builder>)
4344
.scalar(ASTEROID)
4445
.build()
4546
GraphQLSchema schema = load("starWarsSchemaExtended.graphqls", wiring)
@@ -644,7 +645,11 @@ type TypeE {
644645
name: String!
645646
}
646647
647-
type Droid implements Character {
648+
interface Node {
649+
id: ID!
650+
}
651+
652+
type Droid implements Character & Node {
648653
appearsIn: [Episode]!
649654
friends: [Character]
650655
id: ID!
@@ -653,7 +658,7 @@ type Droid implements Character {
653658
primaryFunction: String
654659
}
655660
656-
type Human implements Character {
661+
type Human implements Character & Node {
657662
appearsIn: [Episode]!
658663
friends: [Character]
659664
homePlanet: String
@@ -669,6 +674,12 @@ type Planet {
669674
type Query {
670675
droid(id: ID!): Droid
671676
hero(episode: Episode): Character
677+
node(id: ID!): Node
678+
}
679+
680+
type Starship implements Node {
681+
id: ID!
682+
name: String
672683
}
673684
674685
enum Episode {

src/test/resources/starWarsSchemaExtended.graphqls

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ schema {
55
type Query {
66
hero(episode: Episode): Character
77
droid(id: ID!): Droid
8+
node(id: ID!): Node
89
}
910

1011
enum Episode {
@@ -20,15 +21,19 @@ interface Character {
2021
appearsIn: [Episode]!
2122
}
2223

23-
type Human implements Character {
24+
interface Node {
25+
id: ID!
26+
}
27+
28+
type Human implements Character & Node {
2429
id: ID!
2530
name: String!
2631
friends: [Character]
2732
appearsIn: [Episode]!
2833
homePlanet: String
2934
}
3035

31-
type Droid implements Character {
36+
type Droid implements Character & Node {
3237
id: ID!
3338
name: String!
3439
friends: [Character]
@@ -42,4 +47,9 @@ type Planet {
4247
hitBy : Asteroid
4348
}
4449

50+
type Starship implements Node {
51+
id: ID!
52+
name : String
53+
}
54+
4555
scalar Asteroid

0 commit comments

Comments
 (0)