blob: ecabbe8c3a7aadea748fd500de0ced71d3bce6d0 [file] [log] [blame]
import { Registry, RegistryWithDefaultKey } from '@superset-ui/core/src';
describe('RegistryWithDefaultKey', () => {
let registry: RegistryWithDefaultKey<number>;
beforeEach(() => {
registry = new RegistryWithDefaultKey();
});
it('exists', () => {
expect(RegistryWithDefaultKey).toBeDefined();
});
describe('new RegistryWithDefaultKey(config)', () => {
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(() => {
registry.registerValue('abc', 100).registerValue('def', 200).setDefaultKey('abc');
});
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);
});
it('returns undefined if no key was given and there is no default key', () => {
registry.clearDefaultKey();
expect(registry.get()).toBeUndefined();
});
});
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);
});
});
describe('.clearDefaultKey()', () => {
it('set the default key to undefined', () => {
registry.clearDefaultKey();
expect(registry.defaultKey).toBeUndefined();
});
it('returns itself', () => {
expect(registry.clearDefaultKey()).toBe(registry);
});
});
describe('config.defaultKey', () => {
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();
});
});
describe('when config.initialDefaultKey is set', () => {
const registry2 = new RegistryWithDefaultKey({
initialDefaultKey: 'def',
});
it(`After creation, default key is undefined`, () => {
expect(registry2.defaultKey).toEqual('def');
});
it('.clear() reset defaultKey to this config.defaultKey', () => {
registry2.setDefaultKey('abc');
registry2.clear();
expect(registry2.getDefaultKey()).toEqual('def');
});
});
});
describe('config.setFirstItemAsDefault', () => {
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);
});
});
});
});
});