UNPKG

@rxx/core

Version:

React MVI micro framework.

174 lines 14.4 kB
"use strict"; /** * The MIT License (MIT) * Copyright (c) Taketoshi Aono * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @fileoverview * @author Taketoshi Aono */ 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 = /** @class */ (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 = /** @class */ (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 = /** @class */ (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!'); }); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hhbmRsZXIvX190ZXN0c19fL2hhbmRsZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHOzs7QUFFSCxzQ0FBbUU7QUFDbkUsa0RBSzBCO0FBRTFCLDZCQUF5RDtBQUN6RCw2QkFBOEI7QUFFOUI7SUFBMEIsdUNBQVk7SUFBdEM7O0lBVUEsQ0FBQztJQVRRLDBCQUFJLEdBQVgsVUFBWSxDQUFDO1FBQ1gsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFBLENBQUMsSUFBSyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ00sK0JBQVMsR0FBaEIsVUFBaUIsQ0FBQztRQUNoQixPQUFPLElBQUksbUJBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDTSwyQkFBSyxHQUFaO1FBQ0UsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUFWRCxDQUEwQiw0QkFBWSxHQVVyQztBQUVEO0lBQUE7UUFDUyxlQUFVLEdBQUcsRUFBRSxDQUFDO0lBZ0J6QixDQUFDO0lBZlEsMENBQWdCLEdBQXZCLFVBQXdCLEdBQVc7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ00sNkJBQUcsR0FBVixVQUFXLEdBQVc7UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ00sMENBQWdCLEdBQXZCLFVBQXdCLEdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDTSw2QkFBRyxHQUFWLFVBQVcsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMs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