@@ -4,12 +4,9 @@ const chai = require('chai');
44chai . use ( require ( 'chai-as-promised' ) ) ;
55const { expect } = chai ;
66const sinon = require ( 'sinon' ) ;
7- // const redis = require('redis').createClient();
87const DataLoader = require ( 'dataloader' ) ;
98const createRedisDataLoader = require ( '../index' ) ;
109
11- // const RedisDataLoader = require('../index.js')({ redis });
12-
1310module . exports = ( { name, redis } ) => {
1411 const RedisDataLoader = createRedisDataLoader ( { redis } ) ;
1512
@@ -230,6 +227,41 @@ module.exports = ({ name, redis }) => {
230227
231228 it ( 'should require array' , ( ) =>
232229 expect ( this . loader . loadMany ( ) ) . to . be . rejectedWith ( TypeError ) ) ;
230+
231+ it ( 'should handle custom cacheKeyFn' , ( ) => {
232+ const loader = new RedisDataLoader ( this . keySpace , this . userLoader ( ) , {
233+ cacheKeyFn : key => `foo-${ key } ` ,
234+ } ) ;
235+
236+ loader . loadMany ( [ 'json' , 'null' ] ) . then ( results => {
237+ expect ( results ) . to . deep . equal ( [ this . data . json , this . data . null ] ) ;
238+ } ) ;
239+ } ) ;
240+
241+ it ( 'should use local cache on second load when using custom cacheKeyFn' , ( ) => {
242+ this . stubs . redisMGet = sinon . stub ( redis , 'mget' , ( keys , cb ) => {
243+ cb ( null , [ JSON . stringify ( this . data . json ) ] ) ;
244+ } ) ;
245+
246+ const loader = new RedisDataLoader ( this . keySpace , this . userLoader ( ) , {
247+ cacheKeyFn : key => `foo-${ key } ` ,
248+ } ) ;
249+
250+ return loader
251+ . loadMany ( [ 'json' ] )
252+ . then ( data => {
253+ expect ( this . loadFn . callCount ) . to . equal ( 0 ) ;
254+ expect ( this . stubs . redisMGet . args [ 0 ] [ 0 ] ) . to . deep . equal ( [
255+ 'key-space:foo-json' ,
256+ ] ) ;
257+ expect ( this . stubs . redisMGet . callCount ) . to . equal ( 1 ) ;
258+ return loader . loadMany ( [ 'json' ] ) ;
259+ } )
260+ . then ( data => {
261+ expect ( this . loadFn . callCount ) . to . equal ( 0 ) ;
262+ expect ( this . stubs . redisMGet . callCount ) . to . equal ( 1 ) ;
263+ } ) ;
264+ } ) ;
233265 } ) ;
234266
235267 describe ( 'prime' , ( ) => {
0 commit comments