dd-timer/tests/unit/application/CommandBus.test.ts
POL Mickaël 3e485fd09b chore: normalise fins de ligne CRLF → LF dans tout le repo
Applique .gitattributes sur tous les fichiers existants.
Élimine les différences fantômes entre WSL et Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 08:55:10 +02:00

46 lines
1.5 KiB
TypeScript
Executable File

import { describe, it, expect, vi } from 'vitest';
import { CommandBus } from '@application/handlers/CommandBus';
import { QueryBus } from '@application/handlers/QueryBus';
describe('CommandBus', () => {
it('dispatches to registered handler', () => {
const bus = new CommandBus();
const handler = vi.fn();
bus.register('start-timer', handler);
bus.execute({ type: 'start-timer', enclosId: 1 });
expect(handler).toHaveBeenCalledWith({ type: 'start-timer', enclosId: 1 });
});
it('throws on unknown command', () => {
const bus = new CommandBus();
expect(() => bus.execute({ type: 'unknown' })).toThrow('No handler for command: unknown');
});
it('has returns true for registered', () => {
const bus = new CommandBus();
bus.register('test', vi.fn());
expect(bus.has('test')).toBe(true);
expect(bus.has('other')).toBe(false);
});
});
describe('QueryBus', () => {
it('returns value from handler', () => {
const bus = new QueryBus();
bus.register('get-dashboard', () => ({ total: 42 }));
const result = bus.execute<{ total: number }>({ type: 'get-dashboard' });
expect(result.total).toBe(42);
});
it('throws on unknown query', () => {
const bus = new QueryBus();
expect(() => bus.execute({ type: 'unknown' })).toThrow('No handler for query: unknown');
});
it('has returns true for registered', () => {
const bus = new QueryBus();
bus.register('test', () => null);
expect(bus.has('test')).toBe(true);
});
});