dd-timer/tests/unit/domain/EventBus.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.4 KiB
TypeScript
Executable File

import { describe, it, expect, vi } from 'vitest';
import { EventBus } from '@domain/events/EventBus';
describe('EventBus', () => {
it('dispatches events to subscribers', () => {
const bus = new EventBus();
const handler = vi.fn();
bus.on('timer-completed', handler);
bus.emit({ type: 'timer-completed', enclosId: 1 });
expect(handler).toHaveBeenCalledWith({ type: 'timer-completed', enclosId: 1 });
});
it('ignores unsubscribed event types', () => {
const bus = new EventBus();
const handler = vi.fn();
bus.on('timer-completed', handler);
bus.emit({ type: 'accouplement-registered' });
expect(handler).not.toHaveBeenCalled();
});
it('supports multiple handlers for same event', () => {
const bus = new EventBus();
const h1 = vi.fn();
const h2 = vi.fn();
bus.on('timer-completed', h1);
bus.on('timer-completed', h2);
bus.emit({ type: 'timer-completed' });
expect(h1).toHaveBeenCalled();
expect(h2).toHaveBeenCalled();
});
it('off removes handler', () => {
const bus = new EventBus();
const handler = vi.fn();
bus.on('timer-completed', handler);
bus.off('timer-completed', handler);
bus.emit({ type: 'timer-completed' });
expect(handler).not.toHaveBeenCalled();
});
it('emit with no handlers does not throw', () => {
const bus = new EventBus();
expect(() => bus.emit({ type: 'timer-completed' })).not.toThrow();
});
});