@@ -14,13 +14,17 @@ import defer.DoesNotDisableDeferWithNullIfArgumentQuery
14
14
import defer.HandlesErrorsThrownInDeferredFragmentsQuery
15
15
import defer.HandlesNonNullableErrorsThrownInDeferredFragmentsQuery
16
16
import defer.HandlesNonNullableErrorsThrownOutsideDeferredFragmentsQuery
17
+ import defer.Overlapping2Query
18
+ import defer.OverlappingQuery
19
+ import defer.SubPathQuery
17
20
import defer.WithFragmentSpreadsMutation
18
21
import defer.WithFragmentSpreadsQuery
19
22
import defer.WithInlineFragmentsQuery
20
23
import defer.fragment.ComputerErrorField
21
24
import defer.fragment.ComputerFields
22
25
import defer.fragment.FragmentOnQuery
23
26
import defer.fragment.ScreenFields
27
+ import defer.notypename.SkippingEmptyFragmentQuery
24
28
import kotlinx.coroutines.flow.toList
25
29
import kotlin.test.Test
26
30
import kotlin.test.assertEquals
@@ -357,4 +361,176 @@ class DeferWithApolloServerTest {
357
361
val actualResponseList = apolloClient.query(query).toFlow().toList()
358
362
assertResponseListEquals(expectedDataList, actualResponseList)
359
363
}
364
+
365
+ @Test
366
+ fun overlapping () = runTest(before = { setUp() }, after = { tearDown() }) {
367
+ // Expected payloads:
368
+ // {"data":{"computer":{"__typename":"Computer","id":"Computer1"}},"pending":[{"id":"0","path":["computer"],"label":"b"}],"hasNext":true}
369
+ // {"hasNext":false,"incremental":[{"data":{"cpu":"386","year":1993},"id":"0"}],"completed":[{"id":"0"}]}
370
+ val query = OverlappingQuery ()
371
+ val uuid = uuid4()
372
+
373
+ val expectedDataList = listOf (
374
+ ApolloResponse .Builder (
375
+ query,
376
+ uuid,
377
+ ).data(
378
+ OverlappingQuery .Data (
379
+ OverlappingQuery .Computer (
380
+ " Computer" , " Computer1" , OverlappingQuery .OnComputer (
381
+ " Computer" , " Computer1" , null ,
382
+ )
383
+ )
384
+ )
385
+ )
386
+ .build(),
387
+
388
+ ApolloResponse .Builder (
389
+ query,
390
+ uuid,
391
+ ).data(
392
+ OverlappingQuery .Data (
393
+ OverlappingQuery .Computer (
394
+ " Computer" , " Computer1" , OverlappingQuery .OnComputer (
395
+ " Computer" , " Computer1" , OverlappingQuery .OnComputer1 (" Computer1" , " 386" , 1993 )
396
+ )
397
+ )
398
+ )
399
+ )
400
+ .build()
401
+ )
402
+ val actualResponseList = apolloClient.query(query).toFlow().toList()
403
+ assertResponseListEquals(expectedDataList, actualResponseList)
404
+ }
405
+
406
+ @Test
407
+ fun overlapping2 () = runTest(before = { setUp() }, after = { tearDown() }) {
408
+ // Expected payloads:
409
+ // {"data":{"computer":{"__typename":"Computer","id":"Computer1"}},"pending":[{"id":"0","path":["computer"],"label":"b"}],"hasNext":true}
410
+ // {"hasNext":false,"incremental":[{"data":{"cpu":"386","year":1993},"id":"0"}],"completed":[{"id":"0"}]}
411
+ val query = Overlapping2Query ()
412
+ val uuid = uuid4()
413
+
414
+ val expectedDataList = listOf (
415
+ ApolloResponse .Builder (
416
+ query,
417
+ uuid,
418
+ ).data(
419
+ Overlapping2Query .Data (
420
+ Overlapping2Query .Computer (
421
+ " Computer" , " Computer1" , Overlapping2Query .OnComputerDeferA (" Computer1"
422
+ ), null
423
+ )
424
+ )
425
+ )
426
+ .build(),
427
+ ApolloResponse .Builder (
428
+ query,
429
+ uuid,
430
+ ).data(
431
+ Overlapping2Query .Data (
432
+ Overlapping2Query .Computer (
433
+ " Computer" , " Computer1" , Overlapping2Query .OnComputerDeferA (" Computer1"
434
+ ), Overlapping2Query .OnComputerDeferB (
435
+ " Computer1" , " 386" , 1993
436
+ )
437
+ )
438
+ )
439
+ )
440
+ .build()
441
+ )
442
+ val actualResponseList = apolloClient.query(query).toFlow().toList()
443
+ assertResponseListEquals(expectedDataList, actualResponseList)
444
+ }
445
+
446
+ @Test
447
+ fun subPath () = runTest(before = { setUp() }, after = { tearDown() }) {
448
+ // Expected payloads:
449
+ // {"data":{"__typename":"Query","computer":{"id":"Computer1"}},"pending":[{"id":"0","path":[],"label":"a"}],"hasNext":true}
450
+ // {"hasNext":false,"incremental":[{"data":{"screen":{"isColor":false}},"id":"0","subPath":["computer"]},{"data":{"MyFragment":"Query"},"id":"0"}],"completed":[{"id":"0"}]}
451
+ val query = SubPathQuery ()
452
+ val uuid = uuid4()
453
+
454
+ val expectedDataList = listOf (
455
+ ApolloResponse .Builder (
456
+ query,
457
+ uuid,
458
+ ).data(
459
+ SubPathQuery .Data (
460
+ " Query" , SubPathQuery .Computer (
461
+ " Computer1"
462
+ ), null
463
+ )
464
+ )
465
+ .build(),
466
+ ApolloResponse .Builder (
467
+ query,
468
+ uuid,
469
+ ).data(
470
+ SubPathQuery .Data (
471
+ " Query" , SubPathQuery .Computer (
472
+ " Computer1"
473
+ ), SubPathQuery .OnQuery (
474
+ " Query" , SubPathQuery .Computer1 (
475
+ " Computer1" ,
476
+ SubPathQuery .Screen (false
477
+ )
478
+ )
479
+ )
480
+ )
481
+ )
482
+ .build()
483
+ )
484
+ val actualResponseList = apolloClient.query(query).toFlow().toList()
485
+ assertResponseListEquals(expectedDataList, actualResponseList)
486
+ }
487
+
488
+ @Test
489
+ fun skippingEmptyFragment () = runTest(before = { setUp() }, after = { tearDown() }) {
490
+ // Expected payloads:
491
+ // {"data":{"computer":{}},"pending":[{"id":"0","path":["computer"],"label":"c"}],"hasNext":true}
492
+ // {"hasNext":false,"incremental":[{"data":{"id":"Computer1"},"id":"0"}],"completed":[{"id":"0"}]}
493
+ val query = SkippingEmptyFragmentQuery ()
494
+ val uuid = uuid4()
495
+
496
+ val expectedDataList = listOf (
497
+ ApolloResponse .Builder (
498
+ query,
499
+ uuid,
500
+ ).data(
501
+ SkippingEmptyFragmentQuery .Data (
502
+ SkippingEmptyFragmentQuery .Computer (
503
+ SkippingEmptyFragmentQuery .OnComputer (
504
+ SkippingEmptyFragmentQuery .OnComputer1 (
505
+ null
506
+ )
507
+ )
508
+ )
509
+ )
510
+ )
511
+ .build(),
512
+
513
+ ApolloResponse .Builder (
514
+ query,
515
+ uuid,
516
+ ).data(
517
+ SkippingEmptyFragmentQuery .Data (
518
+ SkippingEmptyFragmentQuery .Computer (
519
+ SkippingEmptyFragmentQuery .OnComputer (
520
+ SkippingEmptyFragmentQuery .OnComputer1 (
521
+ SkippingEmptyFragmentQuery .OnComputer2 (
522
+ " Computer1"
523
+ )
524
+ )
525
+ )
526
+ )
527
+ )
528
+ )
529
+ .build()
530
+ )
531
+ val actualResponseList = apolloClient.query(query).toFlow().toList()
532
+ assertResponseListEquals(expectedDataList, actualResponseList)
533
+ }
534
+
535
+
360
536
}
0 commit comments