lion/packages/singleton-manager/test/SingletonManagerClass.test.js
Thomas Allmer 7f49f2c6a6 feat: manager to support single instances with nested npm installations
BREAKING CHANGE: add singleton-manager
2020-05-18 15:25:21 +02:00

31 lines
1.2 KiB
JavaScript

import { expect } from '@open-wc/testing';
import { SingletonManagerClass } from '../src/SingletonManagerClass.js';
describe('SingletonManagerClass', () => {
it('returns undefined and has false if not set', async () => {
const mngr = new SingletonManagerClass();
expect(mngr.get('overlays/overlays.js::0.13.x')).to.be.undefined;
expect(mngr.has('overlays/overlays.js::0.13.x')).to.be.false;
});
it('return value and has true if set', () => {
const mngr = new SingletonManagerClass();
mngr.set('overlays/overlays.js::0.13.x', 'is-set');
expect(mngr.get('overlays/overlays.js::0.13.x')).to.equal('is-set');
expect(mngr.has('overlays/overlays.js::0.13.x')).to.be.true;
// make sure non set values are still correct
expect(mngr.get('overlays/overlays.js::0.14.x')).to.be.undefined;
expect(mngr.has('overlays/overlays.js::0.14.x')).to.be.false;
});
it('throws if an app tries to set an existing key again', () => {
const mngr = new SingletonManagerClass();
mngr.set('overlays/overlays.js::0.13.x', 'is-set');
expect(() => {
mngr.set('overlays/overlays.js::0.13.x', 'new-set');
}).to.throw(
'The key "overlays/overlays.js::0.13.x" is already defined and can not be overridden.',
);
});
});