Skip to content

Commit 9263ef4

Browse files
committed
Adding Kotlin Entities Client API Code GenTest
Adding KotlinEntitiesClientApiGenTest.kt based on EntitiesClientApiGenTest.kt. Some tests were disabled due that they expressed differences. Will follow with a different PR.
1 parent dacf2fa commit 9263ef4

File tree

2 files changed

+545
-98
lines changed

2 files changed

+545
-98
lines changed

graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/EntitiesClientApiGenTest.kt

Lines changed: 50 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,7 @@ class EntitiesClientApiGenTest {
4747
}
4848
""".trimIndent()
4949

50-
val codeGenResult = CodeGen(
51-
CodeGenConfig(
52-
schemas = setOf(schema),
53-
packageName = basePackageName,
54-
generateClientApi = true
55-
)
56-
).generate()
50+
val codeGenResult = codeGen(schema)
5751

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

72-
assertCompilesJava(codeGenResult.javaSources())
66+
codeGenResult.assertCompile()
7367
}
7468

7569
@Test
@@ -91,13 +85,7 @@ class EntitiesClientApiGenTest {
9185
}
9286
""".trimIndent()
9387

94-
val codeGenResult = CodeGen(
95-
CodeGenConfig(
96-
schemas = setOf(schema),
97-
packageName = basePackageName,
98-
generateClientApi = true
99-
)
100-
).generate()
88+
val codeGenResult = codeGen(schema)
10189

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

114-
assertCompilesJava(codeGenResult.javaSources())
102+
codeGenResult.assertCompile()
115103
}
116104

117105
@Test
@@ -137,13 +125,7 @@ class EntitiesClientApiGenTest {
137125
}
138126
""".trimIndent()
139127

140-
val codeGenResult = CodeGen(
141-
CodeGenConfig(
142-
schemas = setOf(schema),
143-
packageName = basePackageName,
144-
generateClientApi = true
145-
)
146-
).generate()
128+
val codeGenResult = codeGen(schema)
147129

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

155137
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
156-
assertThat(representations.size).isEqualTo(2)
138+
assertThat(representations).hasSize(2)
157139
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
158140
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
159141
.containsExactlyInAnyOrder("__typename", "actor")
160142
assertThat(representations[1].typeSpec.name).isEqualTo("IActorRepresentation")
161143
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
162144
.containsExactlyInAnyOrder("__typename", "name")
163145

164-
assertCompilesJava(codeGenResult.javaSources())
146+
codeGenResult.assertCompile()
165147
}
166148

167149
@Test
@@ -182,13 +164,7 @@ class EntitiesClientApiGenTest {
182164
}
183165
""".trimIndent()
184166

185-
val codeGenResult = CodeGen(
186-
CodeGenConfig(
187-
schemas = setOf(schema),
188-
packageName = basePackageName,
189-
generateClientApi = true
190-
)
191-
).generate()
167+
val codeGenResult = codeGen(schema)
192168

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

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

208-
assertCompilesJava(codeGenResult.javaSources())
184+
codeGenResult.assertCompile()
209185
}
210186

211187
@Test
@@ -233,13 +209,7 @@ class EntitiesClientApiGenTest {
233209
234210
""".trimIndent()
235211

236-
val codeGenResult = CodeGen(
237-
CodeGenConfig(
238-
schemas = setOf(schema),
239-
packageName = basePackageName,
240-
generateClientApi = true
241-
)
242-
).generate()
212+
val codeGenResult = codeGen(schema)
243213

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

255225
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
256-
assertThat(representations.size).isEqualTo(3)
226+
assertThat(representations).hasSize(3)
257227
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
258228
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
259229
.containsExactlyInAnyOrder("__typename", "movieId", "actor")
@@ -264,7 +234,7 @@ class EntitiesClientApiGenTest {
264234
assertThat(representations[2].typeSpec.fieldSpecs).extracting("name")
265235
.containsExactlyInAnyOrder("__typename", "movie", "actor")
266236

267-
assertCompilesJava(codeGenResult.javaSources())
237+
codeGenResult.assertCompile()
268238
}
269239

270240
@Test
@@ -287,13 +257,7 @@ class EntitiesClientApiGenTest {
287257
288258
""".trimIndent()
289259

290-
val codeGenResult = CodeGen(
291-
CodeGenConfig(
292-
schemas = setOf(schema),
293-
packageName = basePackageName,
294-
generateClientApi = true
295-
)
296-
).generate()
260+
val codeGenResult = codeGen(schema)
297261

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

306270
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
307-
assertThat(representations.size).isEqualTo(2)
271+
assertThat(representations).hasSize(2)
308272
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
309273
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
310274
.containsExactlyInAnyOrder("__typename", "movieId")
311275
assertThat(representations[1].typeSpec.name).isEqualTo("MovieActorRepresentation")
312276
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
313277
.containsExactlyInAnyOrder("__typename", "name")
314278

315-
assertCompilesJava(codeGenResult.javaSources())
279+
codeGenResult.assertCompile()
316280
}
317281

318282
@Test
@@ -334,13 +298,7 @@ class EntitiesClientApiGenTest {
334298
}
335299
""".trimIndent()
336300

337-
val codeGenResult = CodeGen(
338-
CodeGenConfig(
339-
schemas = setOf(schema),
340-
packageName = basePackageName,
341-
generateClientApi = true
342-
)
343-
).generate()
301+
val codeGenResult = codeGen(schema)
344302

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

351309
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
352-
assertThat(representations.size).isEqualTo(2)
310+
assertThat(representations).hasSize(2)
353311
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
354312
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
355313
.containsExactlyInAnyOrder("__typename", "movieId", "actor")
356314
assertThat(representations[1].typeSpec.name).isEqualTo("PersonRepresentation")
357315
assertThat(representations[1].typeSpec.fieldSpecs).extracting("name")
358316
.containsExactlyInAnyOrder("__typename", "name", "age")
359317

360-
assertCompilesJava(codeGenResult.javaSources())
318+
codeGenResult.assertCompile()
361319
}
362320

363321
@Test
@@ -381,13 +339,7 @@ class EntitiesClientApiGenTest {
381339
}
382340
""".trimIndent()
383341

384-
val codeGenResult = CodeGen(
385-
CodeGenConfig(
386-
schemas = setOf(schema),
387-
packageName = basePackageName,
388-
generateClientApi = true
389-
)
390-
).generate()
342+
val codeGenResult = codeGen(schema)
391343

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

398350
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
399-
assertThat(representations.size).isEqualTo(2)
351+
assertThat(representations).hasSize(2)
400352
assertThat(representations[0].typeSpec.name).isEqualTo("MovieRepresentation")
401353
assertThat(representations[0].typeSpec.fieldSpecs).extracting("name")
402354
.containsExactlyInAnyOrder("__typename", "id", "genre")
355+
assertThat(representations[1].typeSpec.name).isEqualTo("MovieGenreRepresentation")
403356

404-
assertCompilesJava(codeGenResult.javaSources())
357+
codeGenResult.assertCompile()
405358
}
406359

407360
@Test
@@ -436,13 +389,7 @@ class EntitiesClientApiGenTest {
436389
}
437390
""".trimIndent()
438391

439-
val codeGenResult = CodeGen(
440-
CodeGenConfig(
441-
schemas = setOf(schema),
442-
packageName = basePackageName,
443-
generateClientApi = true
444-
)
445-
).generate()
392+
val codeGenResult = codeGen(schema)
446393

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

485-
assertCompilesJava(codeGenResult.javaSources())
432+
codeGenResult.assertCompile()
486433
}
487434

488435
@Test
489-
fun testScalarsInEntities() {
436+
fun `Entities can have scalar fields`() {
490437
val schema = """
491438
type Query {
492439
movieCountry: MovieCountry
@@ -500,19 +447,14 @@ class EntitiesClientApiGenTest {
500447
501448
""".trimIndent()
502449

503-
val codeGenResult = CodeGen(
504-
CodeGenConfig(
505-
schemas = setOf(schema),
506-
packageName = basePackageName,
507-
generateClientApi = true,
508-
typeMapping = mapOf("Long" to "java.lang.Long")
509-
)
510-
).generate()
450+
val codeGenResult = codeGen(schema)
451+
511452
val representations = codeGenResult.javaDataTypes.filter { "Representation" in it.typeSpec.name }
512-
assertThat(representations.size).isEqualTo(1)
453+
assertThat(representations).hasSize(1)
513454
val projections = codeGenResult.clientProjections
514-
assertThat(projections.size).isEqualTo(3)
515-
assertCompilesJava(codeGenResult.javaSources())
455+
assertThat(projections).hasSize(3)
456+
457+
codeGenResult.assertCompile()
516458
}
517459

518460
@Test
@@ -545,6 +487,8 @@ class EntitiesClientApiGenTest {
545487

546488
val projections = codeGenResult.clientProjections.filter { "Entities" in it.typeSpec.name }
547489
assertThat(projections).isEmpty()
490+
491+
codeGenResult.assertCompile()
548492
}
549493

550494
@Test
@@ -564,15 +508,9 @@ class EntitiesClientApiGenTest {
564508
}
565509
""".trimIndent()
566510

567-
val codeGenResult = CodeGen(
568-
CodeGenConfig(
569-
schemas = setOf(schema),
570-
packageName = basePackageName,
571-
generateClientApi = true
572-
)
573-
).generate()
511+
val codeGenResult = codeGen(schema)
574512
// then
575-
val testClassLoader = assertCompilesJava(codeGenResult).toClassLoader()
513+
val testClassLoader = codeGenResult.assertCompile().toClassLoader()
576514
// assert projection classes
577515
val (entityRootProjectionClass, entitiesFooKeyProjectionClass, entitiesFooKey_BarFieldProjectionClass, entitiesFooKey_MBarFieldProjection) =
578516
arrayOf(
@@ -618,4 +556,18 @@ class EntitiesClientApiGenTest {
618556
.describedAs("method: $name").isNotNull.returns(returnClass) { it.returnType }
619557
}
620558
}
559+
560+
companion object {
561+
fun codeGen(schema: String): CodeGenResult {
562+
return CodeGen(
563+
CodeGenConfig(
564+
schemas = setOf(schema),
565+
packageName = basePackageName,
566+
generateClientApi = true,
567+
language = Language.JAVA
568+
)
569+
).generate()
570+
}
571+
fun CodeGenResult.assertCompile() = assertCompilesJava(this)
572+
}
621573
}

0 commit comments

Comments
 (0)