spec-js/observables/fromEventPattern-spec.js
"use strict";
var chai_1 = require('chai');
var Rx = require('../../dist/cjs/Rx');
var Observable = Rx.Observable;
/** @test {fromEventPattern} */
describe('Observable.fromEventPattern', function () {
asDiagram('fromEventPattern(addHandler, removeHandler)')('should create an observable from the handler API', function () {
function addHandler(h) {
Observable.timer(50, 20, rxTestScheduler)
.mapTo('ev')
.take(2)
.concat(Observable.never())
.subscribe(h);
}
var e1 = Observable.fromEventPattern(addHandler, function () { return void 0; });
var expected = '-----x-x---';
expectObservable(e1).toBe(expected, { x: 'ev' });
});
it('should call addHandler on subscription', function () {
var addHandlerCalledWith;
var addHandler = function (h) {
addHandlerCalledWith = h;
};
var removeHandler = function () {
//noop
};
Observable.fromEventPattern(addHandler, removeHandler)
.subscribe(function () {
//noop
});
chai_1.expect(addHandlerCalledWith).to.be.a('function');
});
it('should call removeHandler on unsubscription', function () {
var removeHandlerCalledWith;
var addHandler = function () {
//noop
};
var removeHandler = function (h) {
removeHandlerCalledWith = h;
};
var subscription = Observable.fromEventPattern(addHandler, removeHandler)
.subscribe(function () {
//noop
});
subscription.unsubscribe();
chai_1.expect(removeHandlerCalledWith).to.be.a('function');
});
it('should send errors in addHandler down the error path', function () {
Observable.fromEventPattern(function (h) {
throw 'bad';
}, function () {
//noop
}).subscribe(function () {
//noop
}, function (err) {
chai_1.expect(err).to.equal('bad');
});
});
it('should accept a selector that maps outgoing values', function (done) {
var target;
var trigger = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
if (target) {
target.apply(null, arguments);
}
};
var addHandler = function (handler) {
target = handler;
};
var removeHandler = function (handler) {
target = null;
};
var selector = function (a, b) {
return a + b + '!';
};
Observable.fromEventPattern(addHandler, removeHandler, selector).take(1)
.subscribe(function (x) {
chai_1.expect(x).to.equal('testme!');
}, function (err) {
done(new Error('should not be called'));
}, function () {
done();
});
trigger('test', 'me');
});
it('should send errors in the selector down the error path', function (done) {
var target;
var trigger = function (value) {
if (target) {
target(value);
}
};
var addHandler = function (handler) {
target = handler;
};
var removeHandler = function (handler) {
target = null;
};
var selector = function (x) {
throw 'bad';
};
Observable.fromEventPattern(addHandler, removeHandler, selector)
.subscribe(function (x) {
done(new Error('should not be called'));
}, function (err) {
chai_1.expect(err).to.equal('bad');
done();
}, function () {
done(new Error('should not be called'));
});
trigger('test');
});
});
//# sourceMappingURL=fromEventPattern-spec.js.map