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>
46 lines
1.5 KiB
TypeScript
Executable File
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);
|
|
});
|
|
});
|