JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 113
  • Score
    100M100P100Q54067F
  • License MIT

Convert RxJS Observable streams to async iterators

Package Exports

  • rx-to-async-iterator

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rx-to-async-iterator) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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