@@ -374,6 +374,50 @@ describe("Model finders", () => {
374
374
expect ( data [ 0 ] ) . to . be . instanceof ( Person )
375
375
expect ( data [ 0 ] ) . to . have . property ( "id" , "2" )
376
376
} )
377
+
378
+ describe ( "when merging association #select" , ( ) => {
379
+ describe ( "and primary data already has a #select" , ( ) => {
380
+ beforeEach ( ( ) => {
381
+ fetchMock . reset ( )
382
+ fetchMock . get (
383
+ "http://example.com/api/v1/people?fields[people]=first_name&fields[books]=title,foo" ,
384
+ {
385
+ data : [ { id : "1" , type : "people" } ]
386
+ }
387
+ )
388
+ } )
389
+
390
+ it ( "queries correctly" , async ( ) => {
391
+ const books = Book . select ( [ 'title' , 'foo' ] )
392
+ const personScope = Person . select ( [ 'first_name' ] ) . merge ( { books } )
393
+ const { data } = await personScope . all ( )
394
+
395
+ expect ( data . length ) . to . eq ( 1 )
396
+ expect ( data [ 0 ] ) . to . be . instanceof ( Person )
397
+ } )
398
+ } )
399
+
400
+ describe ( "and primary data does not already have a #select" , ( ) => {
401
+ beforeEach ( ( ) => {
402
+ fetchMock . reset ( )
403
+ fetchMock . get (
404
+ "http://example.com/api/v1/people?fields[books]=title,foo" ,
405
+ {
406
+ data : [ { id : "1" , type : "people" } ]
407
+ }
408
+ )
409
+ } )
410
+
411
+ it ( "queries correctly" , async ( ) => {
412
+ const books = Book . select ( [ 'title' , 'foo' ] )
413
+ const personScope = Person . merge ( { books } )
414
+ const { data } = await personScope . all ( )
415
+
416
+ expect ( data . length ) . to . eq ( 1 )
417
+ expect ( data [ 0 ] ) . to . be . instanceof ( Person )
418
+ } )
419
+ } )
420
+ } )
377
421
} )
378
422
379
423
describe ( "#select_extra" , ( ) => {
@@ -395,6 +439,50 @@ describe("Model finders", () => {
395
439
expect ( data [ 0 ] ) . to . be . instanceof ( Person )
396
440
expect ( data [ 0 ] ) . to . have . property ( "id" , "2" )
397
441
} )
442
+
443
+ describe ( "when merging association #selectExtra" , ( ) => {
444
+ describe ( "and primary data already has a #selectExtra" , ( ) => {
445
+ beforeEach ( ( ) => {
446
+ fetchMock . reset ( )
447
+ fetchMock . get (
448
+ "http://example.com/api/v1/people?extra_fields[people]=first_name&extra_fields[books]=title,foo" ,
449
+ {
450
+ data : [ { id : "1" , type : "people" } ]
451
+ }
452
+ )
453
+ } )
454
+
455
+ it ( "queries correctly" , async ( ) => {
456
+ const books = Book . selectExtra ( [ 'title' , 'foo' ] )
457
+ const personScope = Person . selectExtra ( [ 'first_name' ] ) . merge ( { books } )
458
+ const { data } = await personScope . all ( )
459
+
460
+ expect ( data . length ) . to . eq ( 1 )
461
+ expect ( data [ 0 ] ) . to . be . instanceof ( Person )
462
+ } )
463
+ } )
464
+
465
+ describe ( "and primary data does not already have a #selectExtra" , ( ) => {
466
+ beforeEach ( ( ) => {
467
+ fetchMock . reset ( )
468
+ fetchMock . get (
469
+ "http://example.com/api/v1/people?extra_fields[books]=title,foo" ,
470
+ {
471
+ data : [ { id : "1" , type : "people" } ]
472
+ }
473
+ )
474
+ } )
475
+
476
+ it ( "queries correctly" , async ( ) => {
477
+ const books = Book . selectExtra ( [ 'title' , 'foo' ] )
478
+ const personScope = Person . merge ( { books } )
479
+ const { data } = await personScope . all ( )
480
+
481
+ expect ( data . length ) . to . eq ( 1 )
482
+ expect ( data [ 0 ] ) . to . be . instanceof ( Person )
483
+ } )
484
+ } )
485
+ } )
398
486
} )
399
487
400
488
describe ( "#includes" , ( ) => {
0 commit comments