Blame view
node_modules/loopback-datasource-juggler/test/kvao/iterate-keys.suite.js
1.59 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
'use strict'; var asyncIterators = require('async-iterators'); var bdd = require('../helpers/bdd-if'); var helpers = require('./_helpers'); var Promise = require('bluebird'); var should = require('should'); var toArray = Promise.promisify(asyncIterators.toArray); module.exports = function(dataSourceFactory, connectorCapabilities) { var canIterateKeys = connectorCapabilities.canIterateKeys !== false; bdd.describeIf(canIterateKeys, '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); }); }); }); }; |