@@ -420,31 +420,47 @@ describe('Accepts options', () => {
420420
421421 describe ( 'Accepts object key in custom cacheKey function' , ( ) => {
422422 function cacheKey ( key ) {
423- var result ;
424- if ( typeof key === 'object' ) {
425- result = Object . keys ( key ) . sort ( ) . map ( k => k + ':' + key [ k ] ) . join ( '-' ) ;
426- } else {
427- result = String ( key ) ;
428- }
429- return result ;
423+ return Object . keys ( key ) . sort ( ) . map ( k => k + ':' + key [ k ] ) . join ( ) ;
430424 }
431425
432- it ( 'Accepts objects with simple key' , async ( ) => {
433- var keyA = '1234' ;
426+ it ( 'Accepts objects with a complex key' , async ( ) => {
434427 var identityLoadCalls = [ ] ;
435428 var identityLoader = new DataLoader ( keys => {
436429 identityLoadCalls . push ( keys ) ;
437430 return Promise . resolve ( keys ) ;
438431 } , { cacheKeyFn : cacheKey } ) ;
439432
440- var valueA = await identityLoader . load ( keyA ) ;
441- expect ( valueA ) . to . equal ( keyA ) ;
433+ var key1 = { id : 123 } ;
434+ var key2 = { id : 123 } ;
435+
436+ var value1 = await identityLoader . load ( key1 ) ;
437+ var value2 = await identityLoader . load ( key2 ) ;
438+
439+ expect ( identityLoadCalls ) . to . deep . equal ( [ [ key1 ] ] ) ;
440+ expect ( value1 ) . to . equal ( key1 ) ;
441+ expect ( value2 ) . to . equal ( key1 ) ;
442442 } ) ;
443443
444- it ( 'Accepts objects with different order of keys' , async ( ) => {
445- var keyA = { a : 123 , b : 321 } ;
446- var keyB = { b : 321 , a : 123 } ;
444+ it ( 'Clears objects with complex key' , async ( ) => {
445+ var identityLoadCalls = [ ] ;
446+ var identityLoader = new DataLoader ( keys => {
447+ identityLoadCalls . push ( keys ) ;
448+ return Promise . resolve ( keys ) ;
449+ } , { cacheKeyFn : cacheKey } ) ;
450+
451+ var key1 = { id : 123 } ;
452+ var key2 = { id : 123 } ;
453+
454+ var value1 = await identityLoader . load ( key1 ) ;
455+ identityLoader . clear ( key2 ) ; // clear equivalent object key
456+ var value2 = await identityLoader . load ( key1 ) ;
457+
458+ expect ( identityLoadCalls ) . to . deep . equal ( [ [ key1 ] , [ key1 ] ] ) ;
459+ expect ( value1 ) . to . equal ( key1 ) ;
460+ expect ( value2 ) . to . equal ( key1 ) ;
461+ } ) ;
447462
463+ it ( 'Accepts objects with different order of keys' , async ( ) => {
448464 var identityLoadCalls = [ ] ;
449465 var identityLoader = new DataLoader ( keys => {
450466 identityLoadCalls . push ( keys ) ;
@@ -453,6 +469,9 @@ describe('Accepts options', () => {
453469
454470 // Fetches as expected
455471
472+ var keyA = { a : 123 , b : 321 } ;
473+ var keyB = { b : 321 , a : 123 } ;
474+
456475 var [ valueA , valueB ] = await Promise . all ( [
457476 identityLoader . load ( keyA ) ,
458477 identityLoader . load ( keyB ) ,
0 commit comments