2021-10-06 15:12:26 +03:00
|
|
|
// Switch these lines once there are useful utils
|
|
|
|
// const testUtils = require('./utils');
|
|
|
|
require('./utils');
|
|
|
|
|
2022-07-20 18:47:23 +03:00
|
|
|
const {Cache} = require('../');
|
2021-10-06 15:12:26 +03:00
|
|
|
|
|
|
|
describe('Cache', function () {
|
|
|
|
describe('populate()', function () {
|
|
|
|
it('fills cache from settings-like array', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
const getAll = cache.getAll();
|
|
|
|
|
|
|
|
getAll.should.have.size(2);
|
|
|
|
getAll.should.deepEqual({
|
|
|
|
one: 1,
|
|
|
|
two: 2
|
|
|
|
});
|
|
|
|
|
|
|
|
cache.get('one').should.equal(1);
|
|
|
|
cache.get('two').should.equal(2);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('clears cache before filling', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings1 = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings1);
|
|
|
|
|
|
|
|
const settings2 = [
|
|
|
|
{key: 'three', value: 3}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings2);
|
|
|
|
|
|
|
|
const getAll = cache.getAll();
|
|
|
|
|
|
|
|
getAll.should.have.size(1);
|
|
|
|
getAll.should.not.have.keys('one', 'two');
|
|
|
|
getAll.should.deepEqual({
|
|
|
|
three: 3
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('returns undefined', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings1 = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
const returned = cache.populate(settings1);
|
|
|
|
|
|
|
|
should(returned).equal(undefined);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('get()', function () {
|
|
|
|
it('returns correct value', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
cache.get('one').should.equal(1);
|
|
|
|
cache.get('two').should.equal(2);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('returns undefined for unknown value', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
should(cache.get('unknown')).equal(undefined);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('returns undefined when cache is empty', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
|
|
|
|
should(cache.get('unknown')).equal(undefined);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('getAll()', function () {
|
|
|
|
it('returns object with all keys', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
const returned = cache.getAll();
|
|
|
|
|
|
|
|
returned.should.have.size(2);
|
|
|
|
returned.should.deepEqual({
|
|
|
|
one: 1,
|
|
|
|
two: 2
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('returns a shallow copy', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
const returned = cache.getAll();
|
|
|
|
|
|
|
|
returned.new = 'exists';
|
|
|
|
|
|
|
|
should.not.exist(cache.get('new'));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('clear()', function () {
|
|
|
|
it('clears cache', function () {
|
|
|
|
const cache = new Cache();
|
|
|
|
const settings = [
|
|
|
|
{key: 'one', value: 1},
|
|
|
|
{key: 'two', value: 2}
|
|
|
|
];
|
|
|
|
|
|
|
|
cache.populate(settings);
|
|
|
|
|
|
|
|
cache.clear();
|
|
|
|
|
|
|
|
cache.getAll().should.deepEqual({});
|
|
|
|
should.not.exist(cache.get('one'));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|