| 22 | }); |
| 23 | |
| 24 | function stubInterface(questionImpl: ReadlinePromisesInterface['question'], closeMock = jest.fn()) { |
| 25 | const listeners = new Map<string, Set<(...args: unknown[]) => void>>(); |
| 26 | const stub = { |
| 27 | question: questionImpl, |
| 28 | close: (...args: unknown[]) => { |
| 29 | closeMock(...args); |
| 30 | stub.emit('close'); |
| 31 | }, |
| 32 | on: jest.fn((event: string, listener: (...args: unknown[]) => void) => { |
| 33 | let set = listeners.get(event); |
| 34 | if (!set) { |
| 35 | set = new Set(); |
| 36 | listeners.set(event, set); |
| 37 | } |
| 38 | set.add(listener); |
| 39 | }), |
| 40 | once: jest.fn((event: string, listener: (...args: unknown[]) => void) => { |
| 41 | let set = listeners.get(event); |
| 42 | if (!set) { |
| 43 | set = new Set(); |
| 44 | listeners.set(event, set); |
| 45 | } |
| 46 | set.add(listener); |