@@ -165,6 +165,22 @@ describe('Primary API', () => {
165165 expect ( loadCalls ) . to . deep . equal ( [ [ 'A' , 'B' ] , [ 'A' , 'B' ] ] ) ;
166166 } ) ;
167167
168+ it ( 'allows priming the cache' , async ( ) => {
169+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
170+
171+ identityLoader . prime ( 'A' , 'A' ) ;
172+
173+ var [ a , b ] = await Promise . all ( [
174+ identityLoader . load ( 'A' ) ,
175+ identityLoader . load ( 'B' )
176+ ] ) ;
177+
178+ expect ( a ) . to . equal ( 'A' ) ;
179+ expect ( b ) . to . equal ( 'B' ) ;
180+
181+ expect ( loadCalls ) . to . deep . equal ( [ [ 'B' ] ] ) ;
182+ } ) ;
183+
168184} ) ;
169185
170186describe ( 'Represents Errors' , ( ) => {
@@ -249,6 +265,23 @@ describe('Represents Errors', () => {
249265 expect ( loadCalls ) . to . deep . equal ( [ [ 1 ] ] ) ;
250266 } ) ;
251267
268+ it ( 'Handles priming the cache with an error' , async ( ) => {
269+ var [ identityLoader , loadCalls ] = idLoader ( ) ;
270+
271+ identityLoader . prime ( 1 , new Error ( 'Error: 1' ) ) ;
272+
273+ var caughtErrorA ;
274+ try {
275+ await identityLoader . load ( 1 ) ;
276+ } catch ( error ) {
277+ caughtErrorA = error ;
278+ }
279+ expect ( caughtErrorA ) . to . be . instanceof ( Error ) ;
280+ expect ( ( caughtErrorA : any ) . message ) . to . equal ( 'Error: 1' ) ;
281+
282+ expect ( loadCalls ) . to . deep . equal ( [ ] ) ;
283+ } ) ;
284+
252285 it ( 'Can clear values from cache after errors' , async ( ) => {
253286 var loadCalls = [ ] ;
254287 var errorLoader = new DataLoader ( keys => {
@@ -485,6 +518,22 @@ describe('Accepts options', () => {
485518 expect ( identityLoadCalls [ 0 ] [ 0 ] ) . to . equal ( keyA ) ;
486519 } ) ;
487520
521+ it ( 'Allows priming the cache with an object key' , async ( ) => {
522+ var [ identityLoader , loadCalls ] = idLoader ( { cacheKeyFn : cacheKey } ) ;
523+
524+ var key1 = { id : 123 } ;
525+ var key2 = { id : 123 } ;
526+
527+ identityLoader . prime ( key1 , key1 ) ;
528+
529+ var value1 = await identityLoader . load ( key1 ) ;
530+ var value2 = await identityLoader . load ( key2 ) ;
531+
532+ expect ( loadCalls ) . to . deep . equal ( [ ] ) ;
533+ expect ( value1 ) . to . equal ( key1 ) ;
534+ expect ( value2 ) . to . equal ( key1 ) ;
535+ } ) ;
536+
488537 } ) ;
489538
490539 describe ( 'Accepts custom cacheMap instance' , ( ) => {
0 commit comments