Skip to content

Commit

Permalink
Added support for union connection declaration
Browse files Browse the repository at this point in the history
  • Loading branch information
BCantos17 committed May 4, 2022
1 parent 47acf46 commit 1b10143
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
Expand Up @@ -43,7 +43,7 @@ class DgsPaginationTypeDefinitionRegistry {

private fun parseConnectionDirective(types: MutableList<TypeDefinition<*>>): List<TypeDefinition<*>> {
val definitions = mutableListOf<ObjectTypeDefinition>()
types.filter { it is ObjectTypeDefinition || it is InterfaceTypeDefinition }
types.filter { it is ObjectTypeDefinition || it is InterfaceTypeDefinition || it is UnionTypeDefinition }
.filter { it.hasDirective("connection") }
.forEach {
definitions.add(createConnection(it.name))
Expand Down
Expand Up @@ -155,4 +155,30 @@ class DgsPaginationTypeDefinitionRegistryTest {
assertThat(paginatedTypeRegistry.types()["CustomScalarConnection"]).isNull()
assertThat(paginatedTypeRegistry.types()["CustomScalarEdge"]).isNull()
}

@Test
fun generateForUnions() {
val schema = """
type Query {
something: IMovieConnection
}
union IMovie @connection = ScaryMovie
type ScaryMovie implements IMovie @connection {
movieID: ID
title: String
rating: Integer
}
""".trimIndent()

val typeRegistry = SchemaParser().parse(schema)
val paginatedTypeRegistry = paginationTypeRegistry.registry(typeRegistry)

assertThat(paginatedTypeRegistry.types()["IMovieConnection"]).isNotNull
assertThat(paginatedTypeRegistry.types()["IMovieEdge"]).isNotNull
assertThat(paginatedTypeRegistry.types()["ScaryMovieConnection"]).isNotNull
assertThat(paginatedTypeRegistry.types()["ScaryMovieEdge"]).isNotNull
assertThat(paginatedTypeRegistry.types()["PageInfo"]).isNotNull
}
}

0 comments on commit 1b10143

Please sign in to comment.