UNPKG

@rxx/worker

Version:

React MVI micro framework.

156 lines (155 loc) 6.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var handler_1 = require("../handler"); var state_handler_1 = require("../state-handler"); var rxjs_1 = require("rxjs"); var chai_1 = require("chai"); var TestHandler = (function (_super) { tslib_1.__extends(TestHandler, _super); function TestHandler() { return _super !== null && _super.apply(this, arguments) || this; } TestHandler.prototype.push = function (p) { return new Promise(function (r) { }); }; TestHandler.prototype.subscribe = function (p) { return new rxjs_1.Subscription(); }; TestHandler.prototype.clone = function () { return new TestHandler(); }; return TestHandler; }(state_handler_1.StateHandler)); var StreamStoreMock = (function () { function StreamStoreMock() { this.collection = {}; } StreamStoreMock.prototype.hasWithoutGlobal = function (key) { return !!this.collection[key]; }; StreamStoreMock.prototype.has = function (key) { return !!this.collection[key]; }; StreamStoreMock.prototype.getWithoutGlobal = function (key) { return this.collection[key]; }; StreamStoreMock.prototype.get = function (key) { return this.collection[key]; }; StreamStoreMock.prototype.add = function (key) { return (this.collection[key] = new rxjs_1.Subject()); }; return StreamStoreMock; }()); describe('handler.ts', function () { describe('registerHandlers', function () { it('register state handlers to global registry.', function () { var handlers = { a: new TestHandler() }; state_handler_1.registerHandlers(handlers); chai_1.expect(state_handler_1.getHandlers()).to.be.deep.eq(handlers); }); }); describe('removeHandlers', function () { it('register state handlers to global registry.', function () { var handlers = { a: new TestHandler(), b: new TestHandler() }; state_handler_1.registerHandlers(handlers); state_handler_1.removeHandler('a'); chai_1.expect(state_handler_1.getHandlers()).to.be.deep.eq({ b: new TestHandler() }); }); }); describe('StreamStore', function () { var store; var map; beforeEach(function () { map = {}; store = new handler_1.StreamStore(map); }); describe('#hasWithOutGlobal()', function () { it('should check whether Subject was defined with specific key that except global key or not', function () { map['*::test'] = true; chai_1.expect(store.hasWithoutGlobal('test::test')).to.be.eq(false); map['test::test'] = true; chai_1.expect(store.hasWithoutGlobal('test::test')).to.be.eq(true); }); }); describe('#has()', function () { it('should check whether Subject was defined with specific key or not', function () { chai_1.expect(store.has('test::test')).to.be.eq(false); map['*::test'] = true; chai_1.expect(store.has('test::test')).to.be.eq(true); }); }); describe('#getWithoutGlobal()', function () { it('should get Subject by specific key that except global key', function () { var subject = {}; map['test::test'] = subject; map['*::test'] = subject; chai_1.expect(store.getWithoutGlobal('test::test')).to.be.deep.eq({}); chai_1.expect(store.getWithoutGlobal('test::test')).to.be.deep.eq({}); }); }); describe('#get()', function () { it('should get Subject by specific key', function () { var subject = {}; map['test::test'] = subject; chai_1.expect(store.get('test::test')).to.be.deep.eq([{}]); map['*::test'] = subject; chai_1.expect(store.get('test::test')).to.be.deep.eq([{}, {}]); }); }); }); describe('HandlerResponse', function () { var response; var collection; beforeEach(function () { response = new handler_1.HandlerResponse((collection = new StreamStoreMock())); }); describe('#for()', function () { it('should create slot to StreamStore', function () { var ob = response.for('test::test'); chai_1.expect(ob).to.be.instanceof(rxjs_1.Observable); chai_1.expect(collection.collection['test::test']).to.be.instanceof(rxjs_1.Subject); }); }); }); describe('StateHandler', function () { var TestHandler = (function (_super) { tslib_1.__extends(TestHandler, _super); function TestHandler(advices) { return _super.call(this, advices, { greeting: ['hello', 'hi'] }) || this; } TestHandler.prototype.clone = function () { return new TestHandler(this.advices); }; TestHandler.prototype.subscribe = function (p) { return new rxjs_1.Subscription(); }; TestHandler.prototype.push = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return Promise.resolve(null); }; TestHandler.prototype.hello = function () { return 'Hello'; }; TestHandler.prototype.hi = function () { return 'Hi'; }; return TestHandler; }(state_handler_1.StateHandler)); describe('constructor', function () { it('should set advices around method.', function () { var th = new TestHandler({ greeting: function (mi) { return mi.proceed() + " Tester!"; }, }); chai_1.expect(th.hello()).to.be.eq('Hello Tester!'); chai_1.expect(th.hi()).to.be.eq('Hi Tester!'); }); }); }); });