2020-09-03 15:02:23 -04:00
|
|
|
import { Registry, RegistryWithDefaultKey } from '@superset-ui/core/src';
|
2018-11-13 16:27:26 -05:00
|
|
|
|
|
|
|
describe('RegistryWithDefaultKey', () => {
|
2018-12-14 17:09:48 -05:00
|
|
|
let registry: RegistryWithDefaultKey<number>;
|
2018-11-13 16:27:26 -05:00
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
registry = new RegistryWithDefaultKey();
|
|
|
|
});
|
|
|
|
|
2020-01-28 18:15:31 -05:00
|
|
|
it('exists', () => {
|
|
|
|
expect(RegistryWithDefaultKey).toBeDefined();
|
|
|
|
});
|
|
|
|
|
2018-11-19 15:53:07 -05:00
|
|
|
describe('new RegistryWithDefaultKey(config)', () => {
|
2018-11-13 16:27:26 -05:00
|
|
|
it('returns a class that extends from Registry', () => {
|
|
|
|
expect(registry).toBeInstanceOf(Registry);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('.clear()', () => {
|
|
|
|
it('also resets default key', () => {
|
|
|
|
registry.setDefaultKey('abc');
|
|
|
|
registry.clear();
|
|
|
|
expect(registry.getDefaultKey()).toBeUndefined();
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry.clear()).toBe(registry);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('.get()', () => {
|
|
|
|
beforeEach(() => {
|
2020-04-01 21:53:41 -04:00
|
|
|
registry.registerValue('abc', 100).registerValue('def', 200).setDefaultKey('abc');
|
2018-11-13 16:27:26 -05:00
|
|
|
});
|
|
|
|
it('.get() returns value from default key', () => {
|
|
|
|
expect(registry.get()).toEqual(100);
|
|
|
|
});
|
|
|
|
it('.get(key) returns value from specified key', () => {
|
|
|
|
expect(registry.get('def')).toEqual(200);
|
|
|
|
});
|
2018-12-14 17:09:48 -05:00
|
|
|
it('returns undefined if no key was given and there is no default key', () => {
|
|
|
|
registry.clearDefaultKey();
|
|
|
|
expect(registry.get()).toBeUndefined();
|
|
|
|
});
|
2018-11-13 16:27:26 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
describe('.getDefaultKey()', () => {
|
|
|
|
it('returns defaultKey', () => {
|
|
|
|
registry.setDefaultKey('abc');
|
|
|
|
expect(registry.getDefaultKey()).toEqual('abc');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('.setDefaultKey(key)', () => {
|
|
|
|
it('set the default key', () => {
|
|
|
|
registry.setDefaultKey('abc');
|
|
|
|
expect(registry.defaultKey).toEqual('abc');
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry.setDefaultKey('ghi')).toBe(registry);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-12-14 17:09:48 -05:00
|
|
|
describe('.clearDefaultKey()', () => {
|
|
|
|
it('set the default key to undefined', () => {
|
|
|
|
registry.clearDefaultKey();
|
|
|
|
expect(registry.defaultKey).toBeUndefined();
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry.clearDefaultKey()).toBe(registry);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-11-19 15:53:07 -05:00
|
|
|
describe('config.defaultKey', () => {
|
2018-11-13 16:27:26 -05:00
|
|
|
describe('when not set', () => {
|
|
|
|
it(`After creation, default key is undefined`, () => {
|
|
|
|
expect(registry.defaultKey).toBeUndefined();
|
|
|
|
});
|
|
|
|
it('.clear() reset defaultKey to undefined', () => {
|
|
|
|
registry.setDefaultKey('abc');
|
|
|
|
registry.clear();
|
|
|
|
expect(registry.getDefaultKey()).toBeUndefined();
|
|
|
|
});
|
|
|
|
});
|
2018-11-19 15:53:07 -05:00
|
|
|
describe('when config.initialDefaultKey is set', () => {
|
2018-11-13 16:27:26 -05:00
|
|
|
const registry2 = new RegistryWithDefaultKey({
|
|
|
|
initialDefaultKey: 'def',
|
|
|
|
});
|
|
|
|
it(`After creation, default key is undefined`, () => {
|
|
|
|
expect(registry2.defaultKey).toEqual('def');
|
|
|
|
});
|
2018-11-19 15:53:07 -05:00
|
|
|
it('.clear() reset defaultKey to this config.defaultKey', () => {
|
2018-11-13 16:27:26 -05:00
|
|
|
registry2.setDefaultKey('abc');
|
|
|
|
registry2.clear();
|
|
|
|
expect(registry2.getDefaultKey()).toEqual('def');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-11-19 15:53:07 -05:00
|
|
|
describe('config.setFirstItemAsDefault', () => {
|
2018-11-13 16:27:26 -05:00
|
|
|
describe('when true', () => {
|
|
|
|
const registry2 = new RegistryWithDefaultKey({ setFirstItemAsDefault: true });
|
|
|
|
beforeEach(() => {
|
|
|
|
registry2.clear();
|
|
|
|
});
|
|
|
|
describe('.registerValue(key, value)', () => {
|
|
|
|
it('sets the default key to this key if default key is not set', () => {
|
|
|
|
registry2.registerValue('abc', 100);
|
|
|
|
expect(registry2.getDefaultKey()).toEqual('abc');
|
|
|
|
});
|
|
|
|
it('does not modify the default key if already set', () => {
|
|
|
|
registry2.setDefaultKey('def').registerValue('abc', 100);
|
|
|
|
expect(registry2.getDefaultKey()).toEqual('def');
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry2.registerValue('ghi', 300)).toBe(registry2);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('.registerLoader(key, loader)', () => {
|
|
|
|
it('sets the default key to this key if default key is not set', () => {
|
|
|
|
registry2.registerLoader('abc', () => 100);
|
|
|
|
expect(registry2.getDefaultKey()).toEqual('abc');
|
|
|
|
});
|
|
|
|
it('does not modify the default key if already set', () => {
|
|
|
|
registry2.setDefaultKey('def').registerLoader('abc', () => 100);
|
|
|
|
expect(registry2.getDefaultKey()).toEqual('def');
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry2.registerLoader('ghi', () => 300)).toBe(registry2);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('when false', () => {
|
|
|
|
const registry2 = new RegistryWithDefaultKey({ setFirstItemAsDefault: false });
|
|
|
|
beforeEach(() => {
|
|
|
|
registry2.clear();
|
|
|
|
});
|
|
|
|
describe('.registerValue(key, value)', () => {
|
|
|
|
it('does not modify default key', () => {
|
|
|
|
registry2.registerValue('abc', 100);
|
|
|
|
expect(registry2.defaultKey).toBeUndefined();
|
|
|
|
registry2.setDefaultKey('def');
|
|
|
|
registry2.registerValue('ghi', 300);
|
|
|
|
expect(registry2.defaultKey).toEqual('def');
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry2.registerValue('ghi', 300)).toBe(registry2);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('.registerLoader(key, loader)', () => {
|
|
|
|
it('does not modify default key', () => {
|
|
|
|
registry2.registerValue('abc', () => 100);
|
|
|
|
expect(registry2.defaultKey).toBeUndefined();
|
|
|
|
registry2.setDefaultKey('def');
|
|
|
|
registry2.registerValue('ghi', () => 300);
|
|
|
|
expect(registry2.defaultKey).toEqual('def');
|
|
|
|
});
|
|
|
|
it('returns itself', () => {
|
|
|
|
expect(registry2.registerLoader('ghi', () => 300)).toBe(registry2);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|