import { Event, Eventable } from './Eventable'; interface MyEventPayload { message: string; } class MyDomainEntity { } const EventableMyDomainEntity = Eventable()(MyDomainEntity); describe('Eventable', () => { let entity: InstanceType; beforeAll(() => { entity = new EventableMyDomainEntity(); }); test('base', async () => { const event = new Event({ message: 'hello' }); entity.registerEvent(event); expect(entity.releaseEvents()).toEqual([event]); expect(entity.releaseEvents()).toEqual([]); }); });