"use strict";
function _FsCache() {
const data = require("../../tools/FsCache");
_FsCache = function () {
return data;
};
return data;
}
jest.mock('analytics-node');
const fs = require('fs-extra');
const path = require('path');
describe('Cacher', () => {
it('works without a bootstrap file', async () => {
const dateCacher = new (_FsCache().Cacher)(async () => {
return new Date();
}, 'dateslol', 1000);
try {
await dateCacher.clearAsync();
} catch (e) {// this is ok
}
const date1 = new Date((await dateCacher.getAsync())); // should be well within the TTL, should be identical value
expect(date1).toEqual(new Date((await dateCacher.getAsync()))); // should be outside of the TTL -- just making sure that sufficient delay will change the value
setTimeout(() => {
dateCacher.getAsync().then(d => {
expect(date1).not.toEqual(new Date(d));
});
}, 3000);
});
it('works with a bootstrap file', async () => {
const expected = JSON.parse((await fs.readFile(path.join(__dirname, '../../../package.json'))));
const failCacher = new (_FsCache().Cacher)(() => {
throw new Error('lol this never succeeds');
}, 'bootstrap', 1000, path.join(__dirname, '../../../package.json')); // since we don't mock the fs here (.cache is transient), need to make sure it's empty
try {
await failCacher.clearAsync();
} catch (e) {// noop
}
const found = await failCacher.getAsync();
expect(found).toEqual(expected);
});
});
//# sourceMappingURL=../../__sourcemaps__/__tests__/tools/FsCache-test.js.map