@mcdevsl/superset-ui
Version:
41 lines (34 loc) • 1.28 kB
text/typescript
import { makeSingleton } from '@superset-ui/core/src';
describe('makeSingleton()', () => {
class Dog {
name: string;
isSitting?: boolean;
constructor(name?: string) {
this.name = name || 'Pluto';
}
sit() {
this.isSitting = true;
}
}
describe('makeSingleton(BaseClass)', () => {
const getInstance = makeSingleton(Dog);
it('returns a function for getting singleton instance of a given base class', () => {
expect(typeof getInstance).toBe('function');
expect(getInstance()).toBeInstanceOf(Dog);
});
it('returned function returns same instance across all calls', () => {
expect(getInstance()).toBe(getInstance());
});
});
describe('makeSingleton(BaseClass, ...args)', () => {
const getInstance = makeSingleton(Dog, 'Doug');
it('returns a function for getting singleton instance of a given base class constructed with the given arguments', () => {
expect(typeof getInstance).toBe('function');
expect(getInstance()).toBeInstanceOf(Dog);
expect(getInstance().name).toBe('Doug');
});
it('returned function returns same instance across all calls', () => {
expect(getInstance()).toBe(getInstance());
});
});
});