@rxx/testing
Version:
Testing module for rxx.
60 lines (59 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = require("@rxx/core");
var rxjs_1 = require("rxjs");
var mocker_1 = require("./mocker");
var devtools_1 = require("@rxx/core/lib/development/devtools");
function prepareTest(IntentClass, StoreClass, opt) {
if (opt === void 0) { opt = { state: {}, multiIntent: false }; }
if (opt && opt.handlers) {
core_1.registerHandlers(opt.handlers);
}
var context = {
state: opt.state,
mergedState: opt.state,
__intent: null,
__subject: null,
};
var provisioning = new core_1.Provisioning('', {}, core_1.isObject(IntentClass)
? IntentClass
: { intent: IntentClass }, Array.isArray(StoreClass) ? StoreClass : [StoreClass], undefined, opt.services || {}, {}, function (intent) { return new mocker_1.Mocker(intent, opt.state); });
provisioning.prepare();
return {
store: provisioning.getStores()[0],
stores: provisioning.getStores(),
mock: opt.multiIntent
? (function () {
var map = provisioning.getIntentInstance();
var ret = {};
for (var key in map) {
ret[key] = new mocker_1.MockManipulator(map[key]);
}
return ret;
})()
: new mocker_1.MockManipulator(provisioning.getIntentInstance().intent),
};
}
exports.prepareTest = prepareTest;
function initAppTester(app, initialState, opt) {
if (opt === void 0) { opt = { states: {} }; }
var input = new core_1.SubjectTree(devtools_1.connectDevTools({ name: '', instanceId: '' }));
var output = app(input.observable, initialState);
input.setState(opt.states);
return {
input: function (type, payload) {
if (payload === void 0) { payload = null; }
input.notify({ type: type, payload: payload });
},
output: output,
};
}
exports.initAppTester = initAppTester;
function safeSubscribe(observable, callback, done, subscription) {
if (subscription === void 0) { subscription = new rxjs_1.Subscription(); }
subscription.add(observable.subscribe(function (v) {
callback(v).then(function () { return done(); }, done);
}));
return subscription;
}
exports.safeSubscribe = safeSubscribe;