@rxx/core
Version:
React MVI micro framework.
174 lines • 14.4 kB
JavaScript
;
/**
* 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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