expected-kefir
Version:
This is a universal library for testing observables from [KefirJS](https://github.com/kefirjs/kefir).
48 lines (44 loc) • 1.63 kB
JavaScript
var assert = require('assert');
module.exports = {
expect(obs) {
return {
toEmit(array) {
var i = 0;
var handler = function ({ type, value, current }) {
try {
if (i > array.length) {
throw Error(`should not emit [${value}] past end of stream`);
}
var expectedType = getExpectedType();
if (type !== expectedType) {
throw Error(`got type [${type}] instead of type [${expectedType}] at expected array index [${i}]`);
}
var expectedValue = getExpectedValue()
assert.deepStrictEqual(value, expectedValue)
i++;
} catch (error) {
obs.offAny(handler);
throw error;
}
};
obs.onAny(handler);
function getExpectedValue() {
if (i === array.length) {
return undefined;
} else {
return array[i];
}
}
function getExpectedType() {
if (i < array.length) {
return 'value';
}
if (i === array.length) {
return 'end';
}
throw Error(`unexpected`)
}
}
}
}
}