@rxx/core
Version:
React MVI micro framework.
207 lines • 15.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 rxjs_1 = require("rxjs");
var chai_1 = require("chai");
var provisioning_1 = require("../provisioning");
var handler_1 = require("../handler/handler");
var state_handler_1 = require("../handler/state-handler");
var store_1 = require("../store/store");
var intent_1 = require("../intent/intent");
var operators_1 = require("rxjs/operators");
var factory_1 = require("../factory");
var TestStore = /** @class */ (function () {
function TestStore() {
}
TestStore.prototype.initialize = function () {
return {
view: {
test: 1,
},
};
};
TestStore = tslib_1.__decorate([
store_1.store
], TestStore);
return TestStore;
}());
var TestIntent = /** @class */ (function () {
function TestIntent() {
}
TestIntent.prototype.getIntent = function () {
return this.intent;
};
TestIntent.prototype.getHandler = function () {
return this.testHandler;
};
TestIntent = tslib_1.__decorate([
intent_1.intent
], TestIntent);
return TestIntent;
}());
var TestParentStore = /** @class */ (function () {
function TestParentStore() {
}
TestParentStore.prototype.initialize = function () {
return {
view: {
parent: 1,
},
};
};
TestParentStore = tslib_1.__decorate([
store_1.store
], TestParentStore);
return TestParentStore;
}());
var TestParentIntent = /** @class */ (function () {
function TestParentIntent() {
}
TestParentIntent.prototype.getIntent = function () {
return this.intent;
};
TestParentIntent.prototype.getHandler = function () {
return this.testHandler;
};
TestParentIntent = tslib_1.__decorate([
intent_1.intent
], TestParentIntent);
return TestParentIntent;
}());
var TestGrandParentStore = /** @class */ (function () {
function TestGrandParentStore() {
}
TestGrandParentStore.prototype.initialize = function () {
return {
view: {
grandParent: 1,
},
};
};
TestGrandParentStore = tslib_1.__decorate([
store_1.store
], TestGrandParentStore);
return TestGrandParentStore;
}());
var TestGrandParentIntent = /** @class */ (function () {
function TestGrandParentIntent() {
}
TestGrandParentIntent.prototype.getIntent = function () {
return this.intent;
};
TestGrandParentIntent.prototype.getHandler = function () {
return this.testHandler;
};
TestGrandParentIntent = tslib_1.__decorate([
intent_1.intent
], TestGrandParentIntent);
return TestGrandParentIntent;
}());
var TestHandler = /** @class */ (function (_super) {
tslib_1.__extends(TestHandler, _super);
function TestHandler() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.subscribed = false;
return _this;
}
TestHandler.prototype.subscribe = function (a) {
this.subscribed = true;
return new rxjs_1.Subscription();
};
TestHandler.prototype.isSubscribed = function () {
return this.subscribed;
};
TestHandler.prototype.push = function (k, a) {
return new Promise(function (r) { });
};
TestHandler.prototype.clone = function () {
return new TestHandler();
};
return TestHandler;
}(state_handler_1.StateHandler));
describe('Provisioning', function () {
var context = {
provisioning: (function () {
var p = new provisioning_1.Provisioning('', {
provisioning: (function () {
var p = new provisioning_1.Provisioning('', {}, { intent: TestGrandParentIntent }, [TestGrandParentStore], undefined, {});
p.prepare();
return p;
})(),
__intent: undefined,
__subject: undefined,
}, { intent: TestParentIntent }, [TestParentStore], undefined, {});
p.prepare();
return p;
})(),
__intent: undefined,
__subject: undefined,
};
var testHandler = new TestHandler();
beforeAll(function () {
state_handler_1.registerHandlers({
testHandler: testHandler,
});
});
describe('#prepare', function () {
it('should connect store and intent and handler', function () {
var p = new provisioning_1.Provisioning('', context, { intent: TestIntent }, [TestStore], undefined, {});
p.prepare();
chai_1.expect(p.getIntentInstance().intent).to.be.instanceof(TestIntent);
chai_1.expect(p.getIntentInstance().intent.getIntent()).to.be.instanceof(handler_1.HandlerResponse);
chai_1.expect(p.getIntentInstance().intent.getHandler()).to.be.instanceof(handler_1.HandlerResponse);
chai_1.expect(p.getStores()[0]).to.be.instanceof(TestStore);
chai_1.expect(p.getStores()[0].intent).to.be.instanceof(TestIntent);
chai_1.expect(p.getState()).to.be.deep.eq({
view: { test: 1, parent: 1, grandParent: 1 },
});
chai_1.expect(p.getHandlers().testHandler.isSubscribed()).to.be.eq(true);
});
it('should accept intent map', function () {
var p = new provisioning_1.Provisioning('', context, { test: TestIntent }, [TestStore], undefined, {});
p.prepare();
chai_1.expect(p.getIntentInstance().test).to.be.instanceof(TestIntent);
chai_1.expect(p.getIntentInstance().test.getIntent()).to.be.instanceof(handler_1.HandlerResponse);
chai_1.expect(p.getIntentInstance().test.getHandler()).to.be.instanceof(handler_1.HandlerResponse);
chai_1.expect(p.getStores()[0]).to.be.instanceof(TestStore);
chai_1.expect(p.getStores()[0].test).to.be.instanceof(TestIntent);
chai_1.expect(p.getState()).to.be.deep.eq({
view: { test: 1, parent: 1, grandParent: 1 },
});
chai_1.expect(p.getHandlers().testHandler.isSubscribed()).to.be.eq(true);
});
it('should accept state factories', function () {
var p = new provisioning_1.Provisioning('', context, {}, [], factory_1.makeApp({
test: function (observable, state) {
return {
view: observable.pipe(operators_1.startWith(state)),
};
},
})({ test: 1 }), {});
p.prepare();
chai_1.expect(p.getState()).to.be.deep.eq({
view: { test: 1, parent: 1, grandParent: 1 },
});
chai_1.expect(p.getHandlers().testHandler.isSubscribed()).to.be.eq(true);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uaW5nLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvX190ZXN0c19fL3Byb3Zpc2lvbmluZy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7OztBQUVILDZCQUFvQztBQUNwQyw2QkFBOEI7QUFDOUIsZ0RBQStDO0FBQy9DLDhDQUFxRDtBQUNyRCwwREFBMEU7QUFDMUUsd0NBQThDO0FBQzlDLDJDQUFrRDtBQUNsRCw0Q0FBMkM7QUFFM0Msc0NBQXFDO0FBS3JDO0lBQUE7SUFZQSxDQUFDO0lBUFEsOEJBQVUsR0FBakI7UUFDRSxPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxDQUFDO2FBQ1I7U0FDRixDQUFDO0lBQ0osQ0FBQztJQVhHLFNBQVM7UUFEZCxhQUFLO09BQ0EsU0FBUyxDQVlkO0lBQUQsZ0JBQUM7Q0FBQSxBQVpELElBWUM7QUFHRDtJQUFBO0lBWUEsQ0FBQztJQVBRLDhCQUFTLEdBQWhCO1FBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTSwrQkFBVSxHQUFqQjtRQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBWEcsVUFBVTtRQURmLGVBQU07T0FDRCxVQUFVLENBWWY7SUFBRCxpQkFBQztDQUFBLEFBWkQsSUFZQztBQUdEO0lBQUE7SUFZQSxDQUFDO0lBUFEsb0NBQVUsR0FBakI7UUFDRSxPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQVhHLGVBQWU7UUFEcEIsYUFBSztPQUNBLGVBQWUsQ0FZcEI7SUFBRCxzQkFBQztDQUFBLEFBWkQsSUFZQztBQUdEO0lBQUE7SUFZQSxDQUFDO0lBUFEsb0NBQVMsR0FBaEI7UUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FB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