Skip to content

Commit

Permalink
Adding Kotlin Entities Client API Code GenTest
Browse files Browse the repository at this point in the history
Adding KotlinEntitiesClientApiGenTest.kt based on EntitiesClientApiGenTest.kt.
Some tests were disabled due that they expressed differences. Will
follow with a different PR.
  • Loading branch information
berngp committed Jul 6, 2022
1 parent dacf2fa commit 9263ef4
Show file tree
Hide file tree
Showing 2 changed files with 545 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -69,7 +63,7 @@ class EntitiesClientApiGenTest {
assertThat(representation.typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -91,13 +85,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -111,7 +99,7 @@ class EntitiesClientApiGenTest {
assertThat(representation.typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -137,13 +125,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -153,15 +135,15 @@ class EntitiesClientApiGenTest {
assertThat(projections[3].typeSpec.name).isEqualTo("EntitiesMovieKey_Actor_ActorProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(2)
assertThat(representations).hasSize(2)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "actor")
assertThat(representations[1].typeSpec.name).isEqualTo("IActorRepresentation")
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "name")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -182,13 +164,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -197,15 +173,15 @@ class EntitiesClientApiGenTest {
assertThat(projections[2].typeSpec.name).isEqualTo("EntitiesMovieKey_ActorsProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(2)
assertThat(representations).hasSize(2)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId", "actors")
assertThat(representations[0].typeSpec.fieldSpecs[1]).extracting("type")
.toString()
.contains("java.util.List<com.netflix.graphql.dgs.codegen.tests.generated.client.ActorRepresentation>")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand Down Expand Up @@ -233,13 +209,7 @@ class EntitiesClientApiGenTest {
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -253,7 +223,7 @@ class EntitiesClientApiGenTest {
assertThat(projections[6].typeSpec.name).isEqualTo("EntitiesMovieCastKey_ActorProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(3)
assertThat(representations).hasSize(3)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId", "actor")
Expand All @@ -264,7 +234,7 @@ class EntitiesClientApiGenTest {
assertThat(representations[2].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movie", "actor")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -287,13 +257,7 @@ class EntitiesClientApiGenTest {
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -304,15 +268,15 @@ class EntitiesClientApiGenTest {
assertThat(projections[3].typeSpec.name).isEqualTo("EntitiesMovieActorKeyProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(2)
assertThat(representations).hasSize(2)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId")
assertThat(representations[1].typeSpec.name).isEqualTo("MovieActorRepresentation")
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "name")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -334,13 +298,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -349,15 +307,15 @@ class EntitiesClientApiGenTest {
assertThat(projections[2].typeSpec.name).isEqualTo("EntitiesMovieKey_ActorProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(2)
assertThat(representations).hasSize(2)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "movieId", "actor")
assertThat(representations[1].typeSpec.name).isEqualTo("PersonRepresentation")
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "name", "age")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand All @@ -381,13 +339,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand All @@ -396,12 +348,13 @@ class EntitiesClientApiGenTest {
assertThat(projections[2].typeSpec.name).isEqualTo("EntitiesMovieKey_GenreProjection")

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(2)
assertThat(representations).hasSize(2)
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
.containsExactlyInAnyOrder("__typename", "id", "genre")
assertThat(representations[1].typeSpec.name).isEqualTo("MovieGenreRepresentation")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
Expand Down Expand Up @@ -436,13 +389,7 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections[0].typeSpec.name).isEqualTo("EntitiesProjectionRoot")
Expand Down Expand Up @@ -482,11 +429,11 @@ class EntitiesClientApiGenTest {
assertThat(representations.first { it.typeSpec.name == "LocationRepresentation" }.typeSpec.fieldSpecs)
.extracting("name").containsExactlyInAnyOrder("__typename", "id")

assertCompilesJava(codeGenResult.javaSources())
codeGenResult.assertCompile()
}

@Test
fun testScalarsInEntities() {
fun `Entities can have scalar fields`() {
val schema = """
type Query {
movieCountry: MovieCountry
Expand All @@ -500,19 +447,14 @@ class EntitiesClientApiGenTest {
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true,
typeMapping = mapOf("Long" to "java.lang.Long")
)
).generate()
val codeGenResult = codeGen(schema)

val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
assertThat(representations.size).isEqualTo(1)
assertThat(representations).hasSize(1)
val projections = codeGenResult.clientProjections
assertThat(projections.size).isEqualTo(3)
assertCompilesJava(codeGenResult.javaSources())
assertThat(projections).hasSize(3)

codeGenResult.assertCompile()
}

@Test
Expand Down Expand Up @@ -545,6 +487,8 @@ class EntitiesClientApiGenTest {

val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
assertThat(projections).isEmpty()

codeGenResult.assertCompile()
}

@Test
Expand All @@ -564,15 +508,9 @@ class EntitiesClientApiGenTest {
}
""".trimIndent()

val codeGenResult = CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true
)
).generate()
val codeGenResult = codeGen(schema)
// then
val testClassLoader = assertCompilesJava(codeGenResult).toClassLoader()
val testClassLoader = codeGenResult.assertCompile().toClassLoader()
// assert projection classes
val (entityRootProjectionClass, entitiesFooKeyProjectionClass, entitiesFooKey_BarFieldProjectionClass, entitiesFooKey_MBarFieldProjection) =
arrayOf(
Expand Down Expand Up @@ -618,4 +556,18 @@ class EntitiesClientApiGenTest {
.describedAs("method: $name").isNotNull.returns(returnClass) { it.returnType }
}
}

companion object {
fun codeGen(schema: String): CodeGenResult {
return CodeGen(
CodeGenConfig(
schemas = setOf(schema),
packageName = basePackageName,
generateClientApi = true,
language = Language.JAVA
)
).generate()
}
fun CodeGenResult.assertCompile() = assertCompilesJava(this)
}
}
Loading

0 comments on commit 9263ef4

Please sign in to comment.