UNPKG

@rxx/testing

Version:
60 lines (59 loc) 2.34 kB
"use strict"; 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;