@rxx/worker
Version:
React MVI micro framework.
156 lines (155 loc) • 6.31 kB
JavaScript
;
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!');
});
});
});
});