UNPKG

@react-mvi/testing

Version:

Test module for React MVI.

44 lines (43 loc) 1.27 kB
/** * @fileoverview * @author Taketoshi Aono */ import { Subject, Observable } from 'rxjs'; import { filter } from 'rxjs/operators'; export class Interrupter { constructor(provisioning) { this.provisioning = provisioning; this.observable = new Subject(); this.provisioning.subscribe(state => { this.observable.next(state); }); } toObservable({ disposeWhenUnsubscribe } = { disposeWhenUnsubscribe: true, }) { return Observable.create(subscriber => { const sub = this.observable.subscribe(v => subscriber.next(v)); return () => { sub.unsubscribe(); if (disposeWhenUnsubscribe) { this.provisioning.dispose(); } }; }); } send(type, payload = {}) { this.provisioning.getSubject().notify({ type, payload }); } subscribe(callback, runInitial = false) { return this.provisioning.subscribe(callback, runInitial); } dispose() { this.provisioning.dispose(); } wait(type) { return this.provisioning .getSubject() .observable.pipe(filter(args => args.type === type)) .toPromise(); } }