@@ -1316,126 +1316,128 @@ describe('Execute: Handles basic execution tasks', () => {
1316
1316
expect ( possibleTypes ) . to . deep . equal ( [ fooObject ] ) ;
1317
1317
} ) ;
1318
1318
1319
- it ( 'stops execution and throws an error when signal is aborted' , async ( ) => {
1320
- // TODO: use real Event once we can finally drop node14 support
1321
- class MockAbortEvent implements IEvent {
1322
- cancelable = false ;
1323
- bubbles = false ;
1324
- composed = false ;
1325
- currentTarget = null ;
1326
- cancelBubble = false ;
1327
- defaultPrevented = false ;
1328
- isTrusted = true ;
1329
- returnValue = false ;
1330
- srcElement = null ;
1331
- type = 'abort' ;
1332
- eventPhase = 0 ;
1333
- timeStamp = 0 ;
1334
- AT_TARGET = 0 ;
1335
- BUBBLING_PHASE = 0 ;
1336
- CAPTURING_PHASE = 0 ;
1337
- NONE = 0 ;
1338
-
1339
- target : IAbortSignal ;
1340
-
1341
- constructor ( abortSignal : IAbortSignal ) {
1342
- this . target = abortSignal ;
1343
- }
1319
+ /* c8 ignore start */
1320
+ if ( typeof AbortController !== 'undefined' ) {
1321
+ it ( 'stops execution and throws an error when signal is aborted' , async ( ) => {
1322
+ // TODO: use real Event once we can finally drop node14 support
1323
+ class MockAbortEvent implements IEvent {
1324
+ cancelable = false ;
1325
+ bubbles = false ;
1326
+ composed = false ;
1327
+ currentTarget = null ;
1328
+ cancelBubble = false ;
1329
+ defaultPrevented = false ;
1330
+ isTrusted = true ;
1331
+ returnValue = false ;
1332
+ srcElement = null ;
1333
+ type = 'abort' ;
1334
+ eventPhase = 0 ;
1335
+ timeStamp = 0 ;
1336
+ AT_TARGET = 0 ;
1337
+ BUBBLING_PHASE = 0 ;
1338
+ CAPTURING_PHASE = 0 ;
1339
+ NONE = 0 ;
1340
+
1341
+ target : IAbortSignal ;
1342
+
1343
+ constructor ( abortSignal : IAbortSignal ) {
1344
+ this . target = abortSignal ;
1345
+ }
1344
1346
1345
- composedPath = ( ) => {
1346
- throw new Error ( 'Not mocked!' ) ;
1347
- } ;
1347
+ composedPath = ( ) => {
1348
+ throw new Error ( 'Not mocked!' ) ;
1349
+ } ;
1348
1350
1349
- initEvent = ( ) => {
1350
- throw new Error ( 'Not mocked!' ) ;
1351
- } ;
1351
+ initEvent = ( ) => {
1352
+ throw new Error ( 'Not mocked!' ) ;
1353
+ } ;
1352
1354
1353
- preventDefault = ( ) => {
1354
- throw new Error ( '' ) ;
1355
- } ;
1355
+ preventDefault = ( ) => {
1356
+ throw new Error ( '' ) ;
1357
+ } ;
1356
1358
1357
- stopImmediatePropagation = ( ) => {
1358
- throw new Error ( '' ) ;
1359
- } ;
1359
+ stopImmediatePropagation = ( ) => {
1360
+ throw new Error ( '' ) ;
1361
+ } ;
1360
1362
1361
- stopPropagation = ( ) => {
1362
- throw new Error ( '' ) ;
1363
- } ;
1364
- }
1363
+ stopPropagation = ( ) => {
1364
+ throw new Error ( '' ) ;
1365
+ } ;
1366
+ }
1365
1367
1366
- class MockAbortSignal implements IAbortSignal {
1367
- aborted : boolean = false ;
1368
- onabort : ( ( ev : IEvent ) => any ) | null = null ;
1369
- reason : unknown ;
1368
+ class MockAbortSignal implements IAbortSignal {
1369
+ aborted : boolean = false ;
1370
+ onabort : ( ( ev : IEvent ) => any ) | null = null ;
1371
+ reason : unknown ;
1370
1372
1371
- throwIfAborted ( ) {
1372
- if ( this . aborted ) {
1373
- throw this . reason ;
1373
+ throwIfAborted ( ) {
1374
+ if ( this . aborted ) {
1375
+ throw this . reason ;
1376
+ }
1374
1377
}
1375
- }
1376
1378
1377
- addEventListener ( type : string , cb : unknown ) {
1378
- expect ( type ) . to . equal ( 'abort' ) ;
1379
- expect ( this . onabort ) . to . equal ( null ) ;
1380
- expect ( cb ) . to . be . a ( 'function' ) ;
1381
- this . onabort = cb as any ;
1382
- }
1379
+ addEventListener ( type : string , cb : unknown ) {
1380
+ expect ( type ) . to . equal ( 'abort' ) ;
1381
+ expect ( this . onabort ) . to . equal ( null ) ;
1382
+ expect ( cb ) . to . be . a ( 'function' ) ;
1383
+ this . onabort = cb as any ;
1384
+ }
1383
1385
1384
- removeEventListener ( type : string , cb : unknown ) {
1385
- expect ( type ) . to . equal ( 'abort' ) ;
1386
- expect ( cb ) . to . be . a ( 'function' ) ;
1387
- this . onabort = null ;
1388
- }
1386
+ removeEventListener ( type : string , cb : unknown ) {
1387
+ expect ( type ) . to . equal ( 'abort' ) ;
1388
+ expect ( cb ) . to . be . a ( 'function' ) ;
1389
+ this . onabort = null ;
1390
+ }
1389
1391
1390
- dispatchEvent ( event : IEvent ) : boolean {
1391
- expect ( this . onabort ) . to . be . a ( 'function' ) ;
1392
- this . onabort ?.( event ) ;
1393
- return true ;
1394
- }
1392
+ dispatchEvent ( event : IEvent ) : boolean {
1393
+ expect ( this . onabort ) . to . be . a ( 'function' ) ;
1394
+ this . onabort ?.( event ) ;
1395
+ return true ;
1396
+ }
1395
1397
1396
- dispatchMockAbortEvent ( reason ?: unknown ) {
1397
- this . reason = reason ;
1398
- mockAbortSignal . dispatchEvent ( new MockAbortEvent ( this ) ) ;
1398
+ dispatchMockAbortEvent ( reason ?: unknown ) {
1399
+ this . reason = reason ;
1400
+ mockAbortSignal . dispatchEvent ( new MockAbortEvent ( this ) ) ;
1401
+ }
1399
1402
}
1400
- }
1401
1403
1402
- const mockAbortSignal = new MockAbortSignal ( ) ;
1404
+ const mockAbortSignal = new MockAbortSignal ( ) ;
1403
1405
1404
- const TestType : GraphQLObjectType = new GraphQLObjectType ( {
1405
- name : 'TestType' ,
1406
- fields : ( ) => ( {
1407
- resolveOnNextTick : {
1408
- type : TestType ,
1409
- resolve : ( ) => resolveOnNextTick ( { } ) ,
1410
- } ,
1411
- string : {
1412
- type : GraphQLString ,
1413
- args : {
1414
- value : { type : new GraphQLNonNull ( GraphQLString ) } ,
1406
+ const TestType : GraphQLObjectType = new GraphQLObjectType ( {
1407
+ name : 'TestType' ,
1408
+ fields : ( ) => ( {
1409
+ resolveOnNextTick : {
1410
+ type : TestType ,
1411
+ resolve : ( ) => resolveOnNextTick ( { } ) ,
1415
1412
} ,
1416
- resolve : ( _ , { value } ) => value ,
1417
- } ,
1418
- abortExecution : {
1419
- type : GraphQLString ,
1420
- resolve : ( ) => {
1421
- const abortError = new Error ( 'Custom abort error' ) ;
1422
- mockAbortSignal . dispatchMockAbortEvent ( abortError ) ;
1423
- return 'aborted' ;
1413
+ string : {
1414
+ type : GraphQLString ,
1415
+ args : {
1416
+ value : { type : new GraphQLNonNull ( GraphQLString ) } ,
1417
+ } ,
1418
+ resolve : ( _ , { value } ) => value ,
1424
1419
} ,
1425
- } ,
1426
- shouldNotBeResolved : {
1427
- type : GraphQLString ,
1428
- /* c8 ignore next */
1429
- resolve : ( ) => 'This should not be executed!' ,
1430
- } ,
1431
- } ) ,
1432
- } ) ;
1420
+ abortExecution : {
1421
+ type : GraphQLString ,
1422
+ resolve : ( ) => {
1423
+ const abortError = new Error ( 'Custom abort error' ) ;
1424
+ mockAbortSignal . dispatchMockAbortEvent ( abortError ) ;
1425
+ return 'aborted' ;
1426
+ } ,
1427
+ } ,
1428
+ shouldNotBeResolved : {
1429
+ type : GraphQLString ,
1430
+ /* c8 ignore next */
1431
+ resolve : ( ) => 'This should not be executed!' ,
1432
+ } ,
1433
+ } ) ,
1434
+ } ) ;
1433
1435
1434
- const schema = new GraphQLSchema ( {
1435
- query : TestType ,
1436
- } ) ;
1436
+ const schema = new GraphQLSchema ( {
1437
+ query : TestType ,
1438
+ } ) ;
1437
1439
1438
- const document = parse ( `
1440
+ const document = parse ( `
1439
1441
query {
1440
1442
value1: string(value: "1")
1441
1443
resolveOnNextTick {
@@ -1456,52 +1458,54 @@ describe('Execute: Handles basic execution tasks', () => {
1456
1458
}
1457
1459
` ) ;
1458
1460
1459
- const result = await execute ( {
1460
- schema,
1461
- document,
1462
- signal : mockAbortSignal ,
1463
- } ) ;
1461
+ const result = await execute ( {
1462
+ schema,
1463
+ document,
1464
+ signal : mockAbortSignal ,
1465
+ } ) ;
1464
1466
1465
- expectJSON ( result ) . toDeepEqual ( {
1466
- data : {
1467
- value1 : '1' ,
1468
- resolveOnNextTick : {
1469
- value2 : '2' ,
1467
+ expectJSON ( result ) . toDeepEqual ( {
1468
+ data : {
1469
+ value1 : '1' ,
1470
1470
resolveOnNextTick : {
1471
+ value2 : '2' ,
1472
+ resolveOnNextTick : {
1473
+ resolveOnNextTick : {
1474
+ shouldNotBeResolved : null ,
1475
+ } ,
1476
+ abortExecution : 'aborted' ,
1477
+ } ,
1478
+ } ,
1479
+ alternativeBranch : {
1480
+ value3 : '3' ,
1471
1481
resolveOnNextTick : {
1472
1482
shouldNotBeResolved : null ,
1473
1483
} ,
1474
- abortExecution : 'aborted' ,
1475
1484
} ,
1476
1485
} ,
1477
- alternativeBranch : {
1478
- value3 : '3' ,
1479
- resolveOnNextTick : {
1480
- shouldNotBeResolved : null ,
1486
+ errors : [
1487
+ {
1488
+ message : 'Custom abort error' ,
1489
+ path : [
1490
+ 'alternativeBranch' ,
1491
+ 'resolveOnNextTick' ,
1492
+ 'shouldNotBeResolved' ,
1493
+ ] ,
1494
+ locations : [ { line : 16 , column : 13 } ] ,
1481
1495
} ,
1482
- } ,
1483
- } ,
1484
- errors : [
1485
- {
1486
- message : 'Custom abort error' ,
1487
- path : [
1488
- 'alternativeBranch' ,
1489
- 'resolveOnNextTick' ,
1490
- 'shouldNotBeResolved' ,
1491
- ] ,
1492
- locations : [ { line : 16 , column : 13 } ] ,
1493
- } ,
1494
- {
1495
- message : 'Custom abort error' ,
1496
- path : [
1497
- 'resolveOnNextTick' ,
1498
- 'resolveOnNextTick' ,
1499
- 'resolveOnNextTick' ,
1500
- 'shouldNotBeResolved' ,
1501
- ] ,
1502
- locations : [ { line : 8 , column : 15 } ] ,
1503
- } ,
1504
- ] ,
1496
+ {
1497
+ message : 'Custom abort error' ,
1498
+ path : [
1499
+ 'resolveOnNextTick' ,
1500
+ 'resolveOnNextTick' ,
1501
+ 'resolveOnNextTick' ,
1502
+ 'shouldNotBeResolved' ,
1503
+ ] ,
1504
+ locations : [ { line : 8 , column : 15 } ] ,
1505
+ } ,
1506
+ ] ,
1507
+ } ) ;
1505
1508
} ) ;
1506
- } ) ;
1509
+ }
1510
+ /* c8 ignore stop */
1507
1511
} ) ;
0 commit comments