34 lines
1,016 B
TypeScript
34 lines
1,016 B
TypeScript
import { describe, it, expect, beforeEach } from 'vitest';
|
|
import { registerRenderer, getRenderer, clearRegistry } from '../src/renderers/registry';
|
|
import type { ModeRenderer, RenderContext } from '../src/renderers/types';
|
|
|
|
function makeMockRenderer(mode: string): ModeRenderer {
|
|
return {
|
|
mode,
|
|
render(_ctx: RenderContext): void {},
|
|
};
|
|
}
|
|
|
|
describe('renderer registry', () => {
|
|
beforeEach(() => {
|
|
clearRegistry();
|
|
});
|
|
|
|
it('registers and retrieves a renderer by mode', () => {
|
|
const renderer = makeMockRenderer('year');
|
|
registerRenderer(renderer);
|
|
expect(getRenderer('year')).toBe(renderer);
|
|
});
|
|
|
|
it('throws for unknown mode', () => {
|
|
expect(() => getRenderer('nonexistent')).toThrowError('Unknown heatmap mode');
|
|
});
|
|
|
|
it('overwrites renderer for same mode', () => {
|
|
const first = makeMockRenderer('year');
|
|
const second = makeMockRenderer('year');
|
|
registerRenderer(first);
|
|
registerRenderer(second);
|
|
expect(getRenderer('year')).toBe(second);
|
|
});
|
|
});
|