dla
Version:
node.js data loader with caching and support of lists
73 lines • 2.55 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
require("source-map-support/register");
const assert = require("assert");
const __1 = require("..");
function init() {
const data = [{
id: '1',
age: 28,
}, {
id: '2',
age: 25,
}, {
id: '3',
age: 16,
}, {
id: '4',
age: 52,
}];
const result = {
collection: new __1.ListableCollection({
extractId: (human) => human.id,
loadOne: (id) => {
result.objectsCounter++;
return new Promise((resolve) => {
setTimeout(() => {
resolve(data.find((item) => item.id === id));
}, 300);
});
},
loadList: (filter) => {
return {
items: data.filter((item) => item.age >= filter.minAge),
};
},
}),
objectsCounter: 0,
};
return result;
}
describe('listable-collection', () => {
it('makes single request', () => __awaiter(this, void 0, void 0, function* () {
const test = init();
assert.deepEqual(yield test.collection.getOne('3'), { id: '3', age: 16 });
assert.deepEqual(test.objectsCounter, 1);
}));
it('makes list request', () => __awaiter(this, void 0, void 0, function* () {
const test = init();
assert.deepEqual(yield test.collection.getList({
minAge: 27,
}), [{
id: '1',
age: 28,
}, {
id: '4',
age: 52,
}]);
assert.deepEqual(yield test.collection.getOne('1'), {
id: '1',
age: 28,
});
assert.deepEqual(test.objectsCounter, 0);
}));
});
//# sourceMappingURL=listable-collection.t.js.map
;