kimai-plugin-heatmap/assets/test/registry.test.ts

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);
});
});