@@ -21,6 +21,8 @@ describe('services fgraphql', () => {
21
21
[ 'opt server-' , s ( 'str' ) , r ( 'full' ) , 'User' , q ( 'obj' ) , o ( 'server-' ) , afterJane ( ) , false , a ( 'janeFull-' ) ] ,
22
22
[ 'opt client-' , s ( 'str' ) , r ( 'full' ) , 'User' , q ( 'obj' ) , o ( 'client-' ) , afterJane ( ) , true , a ( 'janeFull-' ) ] ,
23
23
[ 'before hook' , s ( 'str' ) , r ( 'full' ) , 'User' , q ( 'obj' ) , o ( 'both' ) , beforeJane ( ) , false , a ( 'janeFull' ) ] ,
24
+ [ 'func params' , s ( 'param' ) , r ( 'params' ) , 'User' , q ( 'params' ) , o ( 'both' ) , afterJane ( ) , false , a ( 'janeParams' ) ] ,
25
+ [ 'join names' , s ( 'str' ) , r ( 'full' ) , 'User' , q ( 'obj' ) , o ( 'join-' ) , afterJane ( ) , false , a ( 'janeJoin' ) ] ,
24
26
// Test conversion of resolver results
25
27
// desc, schema, resolvers, recordType, query, options, context, client, result
26
28
[ 'undef->null' , s ( 'cnv0' ) , r ( 'undefin' ) , 'User' , q ( 'obj' ) , o ( 'both' ) , beforeJane ( ) , false , a ( 'janeNull' ) ] ,
@@ -177,6 +179,15 @@ type User {
177
179
fullName : { nonNullTypeField : true , typeof : 'String' }
178
180
}
179
181
} ;
182
+ case 'param' :
183
+ return {
184
+ User : {
185
+ firstName : { typeof : 'String' } ,
186
+ lastName : { typeof : 'String' } ,
187
+ fullName : { nonNullTypeField : true , typeof : 'String' } ,
188
+ params : { typeof : 'JSON' }
189
+ }
190
+ } ;
180
191
case 'err1' :
181
192
return ( ) => null ;
182
193
@@ -217,6 +228,16 @@ function r (typ) {
217
228
}
218
229
}
219
230
} ;
231
+ case 'params' :
232
+ return {
233
+ User : {
234
+ // fullName: String!
235
+ fullName :
236
+ ( parent , args , content , ast ) => `${ parent . first } ${ parent . last } ` , // eslint-disable-line no-unused-vars
237
+ params :
238
+ ( parent , args , content , ast ) => ( { args, ast } )
239
+ }
240
+ } ;
220
241
case 'err1' :
221
242
return { User : { fullName : 'foo' } } ;
222
243
@@ -319,6 +340,10 @@ function q (typ) {
319
340
return { fullName : '' , first : null , last : 1 } ;
320
341
case 'fcn' :
321
342
return ( ) => ( { fullName : { } } ) ;
343
+ case 'params' :
344
+ return { fullName : { } , params : {
345
+ _args : { key : 1 , query : { foo : 2 } , params : { bar : 3 } , baz : 4 }
346
+ } } ;
322
347
case 'err1' :
323
348
return undefined ;
324
349
@@ -419,6 +444,12 @@ function o (typ) {
419
444
inclAllFieldsClient : true ,
420
445
extraAuthProps : [ 'foo' ]
421
446
} ;
447
+ case 'join-' :
448
+ return {
449
+ inclAllFieldsServer : true ,
450
+ inclAllFieldsClient : true ,
451
+ inclJoinedNames : false
452
+ } ;
422
453
default :
423
454
throw new Error ( `Invalid typ ${ typ } for "o" function.` ) ;
424
455
}
@@ -429,21 +460,28 @@ function a (typ) {
429
460
switch ( typ ) {
430
461
/* eslint-disable */
431
462
case 'janeNull' :
432
- return { first : 'Jane' , last : 'Doe' , fullName : null } ;
463
+ return { first : 'Jane' , last : 'Doe' , fullName : null , _include : [ 'fullName' ] } ;
433
464
case 'janeFull' :
434
- return { first : 'Jane' , last : 'Doe' , fullName : 'Jane Doe' } ;
465
+ return { first : 'Jane' , last : 'Doe' , fullName : 'Jane Doe' , _include : [ 'fullName' ] } ;
435
466
case 'janeArray' :
436
- return { first : 'Jane' , last : 'Doe' , fullName : [ 'Jane Doe' ] } ;
467
+ return { first : 'Jane' , last : 'Doe' , fullName : [ 'Jane Doe' ] , _include : [ 'fullName' ] } ;
437
468
case 'janeArray0' :
438
- return { first : 'Jane' , last : 'Doe' , fullName : [ ] } ;
469
+ return { first : 'Jane' , last : 'Doe' , fullName : [ ] , _include : [ 'fullName' ] } ;
439
470
case 'janeFull-' :
440
- return { fullName : 'Jane Doe' } ;
471
+ return { fullName : 'Jane Doe' , _include : [ 'fullName' ] } ;
441
472
case 'janeMess' :
442
- return { first : 'foo' , last : 'Doe' , fullName : 'Jane Doe' } ;
473
+ return { first : 'foo' , last : 'Doe' , fullName : 'Jane Doe' , _include : [ 'fullName' ] } ;
443
474
case 'jane0' :
444
- return { first : 'Jane' } ;
475
+ return { first : 'Jane' } ;
445
476
case 'janeFalsey' :
446
- return { last : 'Doe' } ;
477
+ return { last : 'Doe' } ;
478
+ case 'janeJoin' :
479
+ return { first : 'Jane' , last : 'Doe' , fullName : 'Jane Doe' } ;
480
+ case 'janeParams' :
481
+ return { first : 'Jane' , last : 'Doe' , fullName : 'Jane Doe' , _include : [ 'fullName' , 'params' ] ,
482
+ params : {
483
+ args : { key : 1 , query : { foo : 2 } , params : { bar : 3 } , baz : 4 } , ast : undefined
484
+ } } ;
447
485
448
486
case 'S2post' :
449
487
return {
@@ -452,7 +490,8 @@ function a (typ) {
452
490
posts : [
453
491
{ _id : '1001' , body : 'foo body' } ,
454
492
{ _id : '1002' , body : 'bar body' } ,
455
- ]
493
+ ] ,
494
+ _include : [ 'posts' ]
456
495
} ;
457
496
case 'S2parm' :
458
497
return {
@@ -461,7 +500,8 @@ function a (typ) {
461
500
posts : [
462
501
{ _id : '1001' , body : 'foo body' } ,
463
502
{ _id : '9999' , body : 'bar body' } ,
464
- ]
503
+ ] ,
504
+ _include : [ 'posts' ]
465
505
} ;
466
506
case 'S2comm' :
467
507
return {
@@ -470,7 +510,8 @@ function a (typ) {
470
510
comments : [
471
511
{ _id : '2001' , comment : 'foo comment' } ,
472
512
{ _id : '2002' , comment : 'bar comment' } ,
473
- ]
513
+ ] ,
514
+ _include : [ 'comments' ]
474
515
} ;
475
516
case 'S2cont' :
476
517
return {
@@ -479,7 +520,8 @@ function a (typ) {
479
520
posts : [
480
521
{ _id : '1001' , body : 'foo body' } ,
481
522
{ _id : '9999' , body : 'bar body' } ,
482
- ]
523
+ ] ,
524
+ _include : [ 'posts' ]
483
525
} ;
484
526
case 'S2both' :
485
527
return {
@@ -492,7 +534,8 @@ function a (typ) {
492
534
comments : [
493
535
{ _id : '2001' , comment : 'foo comment' } ,
494
536
{ _id : '2002' , comment : 'bar comment' } ,
495
- ]
537
+ ] ,
538
+ _include : [ 'posts' , 'comments' ]
496
539
} ;
497
540
498
541
case 'S3all' :
@@ -502,29 +545,42 @@ function a (typ) {
502
545
posts : [
503
546
{ _id : '1001' ,
504
547
body : 'foo body' ,
505
- author : { _id : '3001' , first : 'Jane' , last : 'Doe' }
548
+ author : { _id : '3001' , first : 'Jane' , last : 'Doe' } ,
549
+ _include : [ 'author' ]
506
550
} ,
507
551
{
508
552
_id : '1002' ,
509
553
body : 'bar body' ,
510
- author : { _id : '3001' , first : 'Jane' , last : 'Doe' }
554
+ author : { _id : '3001' , first : 'Jane' , last : 'Doe' } ,
555
+ _include : [ 'author' ]
511
556
}
512
557
] ,
513
558
comments : [
514
559
{ _id : '2001' ,
515
560
comment : 'foo comment' ,
516
- author : { _id : '4001' , first : 'Jane' , last : 'Doe' }
561
+ author : { _id : '4001' , first : 'Jane' , last : 'Doe' } ,
562
+ _include : [ 'author' ]
517
563
} ,
518
564
{
519
565
_id : '2002' ,
520
566
comment : 'bar comment' ,
521
- author : { _id : '4001' , first : 'Jane' , last : 'Doe' }
567
+ author : { _id : '4001' , first : 'Jane' , last : 'Doe' } ,
568
+ _include : [ 'author' ]
522
569
}
523
- ]
570
+ ] ,
571
+ _include : [ 'posts' , 'comments' ]
524
572
}
525
573
526
574
default :
527
575
throw new Error ( `Invalid typ ${ typ } for "a" function.` ) ;
528
576
}
529
577
/* eslint-enable */
530
578
}
579
+
580
+ /*
581
+ const { inspect } = require('util');
582
+ function inspector(desc, obj) {
583
+ console.log(desc);
584
+ console.log(inspect(obj, { colors: true, depth: 5 }));
585
+ }
586
+ */
0 commit comments