@@ -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