49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var asyncIterators = require('async-iterators');
|
||
|
var helpers = require('./_helpers');
|
||
|
var Promise = require('bluebird');
|
||
|
var should = require('should');
|
||
|
var toArray = Promise.promisify(asyncIterators.toArray);
|
||
|
|
||
|
module.exports = function(dataSourceFactory, connectorCapabilities) {
|
||
|
describe('iterateKeys', function() {
|
||
|
var CacheItem;
|
||
|
beforeEach(function unpackContext() {
|
||
|
CacheItem = helpers.givenCacheItem(dataSourceFactory);
|
||
|
});
|
||
|
|
||
|
it('returns AsyncIterator covering all keys', function() {
|
||
|
return helpers.givenKeys(CacheItem, ['key1', 'key2'])
|
||
|
.then(function() {
|
||
|
var it = CacheItem.iterateKeys();
|
||
|
should(it).have.property('next');
|
||
|
return toArray(it);
|
||
|
})
|
||
|
.then(function(keys) {
|
||
|
keys.sort();
|
||
|
should(keys).eql(['key1', 'key2']);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('returns AsyncIterator supporting Promises', function() {
|
||
|
var iterator;
|
||
|
return helpers.givenKeys(CacheItem, ['key'])
|
||
|
.then(function() {
|
||
|
iterator = CacheItem.iterateKeys();
|
||
|
return iterator.next();
|
||
|
})
|
||
|
.then(function(key) {
|
||
|
should(key).equal('key');
|
||
|
return iterator.next();
|
||
|
})
|
||
|
.then(function(key) {
|
||
|
// Note: AsyncIterator contract requires `undefined` to signal
|
||
|
// the end of the sequence. Other false-y values like `null`
|
||
|
// don't work.
|
||
|
should(key).equal(undefined);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
};
|