Skip to content

Commit 0aa93b4

Browse files
committed
Add tests
1 parent 8d3f322 commit 0aa93b4

2 files changed

Lines changed: 313 additions & 58 deletions

File tree

lib/src/test/kotlin/graphql/nadel/definition/coordinates/NadelSchemaMemberCoordinatesFactoryTest.kt

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,4 +188,125 @@ class NadelSchemaMemberCoordinatesFactoryTest {
188188

189189
assertTrue(coordinates.size == expectedSet.size)
190190
}
191+
192+
@Test
193+
fun `generates coordinates for minimal schema with single query field`() {
194+
val schema = SchemaGenerator.createdMockedSchema(
195+
"""
196+
type Query {
197+
hello: String
198+
}
199+
""".trimIndent()
200+
)
201+
202+
val expectedSet = setOf(
203+
NadelObjectCoordinates("Query"),
204+
NadelObjectCoordinates("Query").field("hello"),
205+
)
206+
207+
// When
208+
val coordinates = NadelSchemaMemberCoordinatesFactory().create(schema)
209+
210+
// Then
211+
for (expected in expectedSet) {
212+
assertTrue(coordinates.contains(expected))
213+
}
214+
for (actual in coordinates) {
215+
assertTrue(expectedSet.contains(actual))
216+
}
217+
assertTrue(coordinates.size == expectedSet.size)
218+
}
219+
220+
@Test
221+
fun `generates coordinates for schema with union type`() {
222+
val schema = SchemaGenerator.createdMockedSchema(
223+
"""
224+
type Query {
225+
result: SearchResult
226+
}
227+
union SearchResult = User | Product
228+
type User {
229+
id: ID!
230+
name: String
231+
}
232+
type Product {
233+
id: ID!
234+
title: String
235+
}
236+
""".trimIndent()
237+
)
238+
239+
val expectedSet = setOf(
240+
NadelObjectCoordinates("Query"),
241+
NadelObjectCoordinates("Query").field("result"),
242+
NadelUnionCoordinates("SearchResult"),
243+
NadelObjectCoordinates("User"),
244+
NadelObjectCoordinates("User").field("id"),
245+
NadelObjectCoordinates("User").field("name"),
246+
NadelObjectCoordinates("Product"),
247+
NadelObjectCoordinates("Product").field("id"),
248+
NadelObjectCoordinates("Product").field("title"),
249+
)
250+
251+
// When
252+
val coordinates = NadelSchemaMemberCoordinatesFactory().create(schema)
253+
254+
// Then
255+
for (expected in expectedSet) {
256+
assertTrue(coordinates.contains(expected))
257+
}
258+
for (actual in coordinates) {
259+
assertTrue(expectedSet.contains(actual))
260+
}
261+
assertTrue(coordinates.size == expectedSet.size)
262+
}
263+
264+
@Test
265+
fun `generates coordinates for schema with input type and mutation`() {
266+
val schema = SchemaGenerator.createdMockedSchema(
267+
"""
268+
type Query {
269+
user(id: ID!): User
270+
}
271+
type Mutation {
272+
createUser(input: CreateUserInput!): User
273+
}
274+
input CreateUserInput {
275+
name: String!
276+
email: String
277+
}
278+
type User {
279+
id: ID!
280+
name: String
281+
}
282+
""".trimIndent()
283+
)
284+
285+
val expectedSet = setOf(
286+
NadelObjectCoordinates("Query"),
287+
NadelObjectCoordinates("Query").field("user"),
288+
NadelObjectCoordinates("Query").field("user").argument("id"),
289+
NadelObjectCoordinates("Mutation"),
290+
NadelObjectCoordinates("Mutation").field("createUser"),
291+
NadelObjectCoordinates("Mutation").field("createUser").argument("input"),
292+
NadelInputObjectCoordinates("CreateUserInput"),
293+
NadelInputObjectCoordinates("CreateUserInput").field("name"),
294+
NadelInputObjectCoordinates("CreateUserInput").field("email"),
295+
NadelObjectCoordinates("User"),
296+
NadelObjectCoordinates("User").field("id"),
297+
NadelObjectCoordinates("User").field("name"),
298+
)
299+
300+
// When
301+
val coordinates = NadelSchemaMemberCoordinatesFactory().create(schema)
302+
303+
// Then
304+
for (expected in expectedSet) {
305+
assertTrue(coordinates.contains(expected))
306+
}
307+
for (actual in coordinates) {
308+
assertTrue(expectedSet.contains(actual))
309+
}
310+
assertTrue(coordinates.size == expectedSet.size)
311+
}
191312
}

0 commit comments

Comments
 (0)