src/utils/fromEvent.spec.ts
import {expect} from 'chai';
import EventEmitter from 'eventemitter3';
import {lastValueFrom} from 'rxjs';
import {take, toArray} from 'rxjs/operators';
import {fromEvent} from './fromEvent';
interface Events {
foo: [number, string];
bar: [number];
}
describe('utils/fromEvent', () => {
it('should convert events with more than one argument', async () => {
const emitter = new EventEmitter<Events>();
const eventPromise = lastValueFrom(fromEvent(emitter, 'foo').pipe(take(2), toArray()));
emitter.emit('foo', 5, 'a');
emitter.emit('foo', 6, 'b');
expect(await eventPromise).to.eql([[5, 'a'], [6, 'b']]);
});
it('should convert events with only one argument', async () => {
const emitter = new EventEmitter<Events>();
const eventPromise = lastValueFrom(fromEvent(emitter, 'bar').pipe(take(2), toArray()));
emitter.emit('bar', 5);
emitter.emit('bar', 6);
expect(await eventPromise).to.eql([5, 6]);
});
});