rx-to-async-iterator

1.2.3 • Public • Published

rx-to-async-iterator Build Status Coverage Status Docs js-semistandard-style

Convert RxJS Observable streams to async iterators

IMPORTANT: This library only supports RxJS 4.x.

Looking for RxJS 5.0+ support? Try rxjs-to-async-iterator. (Same name but replace 'rx' with 'rxjs'.)

This module is primarily intended for use in testing more complex RxJS-based async sequences, though that doesn't preclude other use cases.

It is intended for use with mocha for testing as modified by co-mocha for coroutine/generator support.

Installation

NPM

npm install --save rx-to-async-iterator

Usage

require('co-mocha');
const Rx = require('rx');
const chai = require('chai');
const expect = chai.expect;
require('to-async-iterator');
  // Side effect: Adds methods to Rx.Observable prototype.
 
describe('some examples', () => {
  it('can verify that an Observable generates a predetermined sequence of values', function *() {
    const iter = Rx.Observable.from([42, 45]).toAsyncIterator();
 
    expect(yield iter.nextValue()).to.equal(42);
      // Will throw if onError or onCompleted are produced.
    expect(yield iter.nextValue()).to.equal(45);
 
    yield iter.shouldComplete();
      // Will throw if onNext or onError are produced.
 
    iter.unsubscribe();
      // Use this if ending the test before the Observable terminates and you
      // want to ensure proper resource cleanup. This is not necessary if you
      // reach an onComplete or onError state in a successful test.
  });
 
  it('has a shortcut form for an Observable that produces a single value', function *() {
    expect(yield Rx.Observable.just(47).shouldGenerateOneValue()).to.equal(47);
      // Will throw if any sequence other than onNext(47), onCompleted() is produced.
  });
 
  it('has a shortcut form for an Observable that produces no values', function *() {
    expect(yield Rx.Observable.empty(47)).shouldBeEmpty();
      // Will throw if onNext or onError are produced.
  });
 
  it('can verify that an Observable generates an error', function *() {
    const iter = Rx.Observable.throw(new Error('expected failure')).toAsyncIterator();
    expect((yield iter.shouldThrow()).message).to.equal('expected failure');
  });
 
  it('has a shortcut form for an Observable that only generates an Error', function *() {
    const obs = Rx.Observable.throw(new Error('expect this fail'));
    expect((yield obs.shouldThrow()).message).to.equal('expect this fail');
  });
});
 

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i rx-to-async-iterator

Weekly Downloads

6

Version

1.2.3

License

MIT

Last publish

Collaborators

  • tangledfruit