UNPKG

nope-js-node

Version:

NoPE Runtime for Nodejs. For Browser-Support please use nope-browser

101 lines (100 loc) 5.23 kB
"use strict"; /** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2022-01-05 17:50:44 * @modify date 2022-01-05 17:50:44 * @desc [description] */ Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const mocha_1 = require("mocha"); require("reflect-metadata"); const getLayer_nodejs_1 = require("../../communication/getLayer.nodejs"); const eventEmitter_1 = require("../../eventEmitter"); const async_1 = require("../../helpers/async"); const module_1 = require("../../module"); const nopeObservable_1 = require("../../observables/nopeObservable"); const InstanceManager_1 = require("./InstanceManager"); (0, mocha_1.describe)("NopeInstanceManager", function () { // Describe the required Test: let manager; manager = new InstanceManager_1.NopeInstanceManager({ communicator: (0, getLayer_nodejs_1.getLayer)("event", "", false), logger: false, }, () => new eventEmitter_1.NopeEventEmitter(), () => new nopeObservable_1.NopeObservable(), async () => "test", "test", undefined, undefined, manager); (0, mocha_1.it)("registering instance", async () => { let called = false; let calledService = false; class TestModule extends module_1.NopeBaseModule { // We can not provide a service. // @nopeMethod({ // id: "service", // schema: {}, // }) // public async service() { // calledService = true; // return "called"; // } async dispose() { await super.dispose(); called = true; } async init(p1, p2) { this.author = { forename: "test", surename: "test", mail: "test", }; this.version = { date: new Date(), version: 1, }; this.description = "test"; (0, chai_1.assert)(p1 == "p1" && p2 == "p2", "parameters where matched wrong"); await super.init(); } } await manager.ready.waitFor(); // Now we register the Service await manager.registerConstructor("TestModule", async (core, identifier) => { (0, chai_1.assert)(identifier === "instance", "The identifier has not been transmitted"); return new TestModule(core); }); await (0, async_1.sleep)(10); // Check the Constructors const constructors = manager.constructors.extractedKey; (0, chai_1.expect)(constructors).to.include("TestModule"); (0, chai_1.assert)(manager.constructors.amountOf.get("TestModule") == 1, "There should be one Provider for this constructor"); (0, chai_1.assert)(manager.constructors.keyMappingReverse.get("TestModule").size == 1, "There should be one Provider for this constructor"); (0, chai_1.assert)(manager.constructors.conflicts.size == 0, "There should be no conflict"); (0, chai_1.assert)(manager.constructorExists("TestModule"), "Constructor should be known!"); (0, chai_1.assert)(manager.constructorExists("unkown") == false, "Constructor should not be known!"); (0, chai_1.assert)(Array.from(manager.constructors.keyMappingReverse.get("TestModule"))[0] == "test", "The Provider should be 'test'"); const instance = await manager.createInstance({ identifier: "instance", type: "TestModule", params: ["p1", "p2"], }); (0, chai_1.assert)(manager.instanceExists("instance", false) == true, "The instance should be known!"); (0, chai_1.assert)(manager.instanceExists("instance", true) == false, "No external manager is present!"); (0, chai_1.assert)(manager.internalInstances.getContent().includes("instance"), "The instance should be listed as internal instance."); (0, chai_1.assert)(Array.from(manager.instances.keyMappingReverse.get("instance"))[0] == "test", "The Provider should be 'test'"); // Now test the instance wrapper // assert( // (await instance.service()) === "called", // "The result should be called" // ); // assert(calledService, "The service flag should be different now."); (0, chai_1.assert)((await instance.listEvents()).length === 0, "No event has been defined"); (0, chai_1.assert)((await instance.listProperties()).length === 0, "No property has been defined"); (0, chai_1.assert)((await instance.listMethods()).length === 0, "No Method should be known"); (0, chai_1.assert)(Object.keys(instance.dynamicInstanceMethods).length === 0, "No Method should be known"); (0, chai_1.assert)(Object.keys(instance.methods).length === 0, "No Method should be known"); await instance.dispose(); await (0, async_1.sleep)(100); (0, chai_1.assert)(!manager.instances.amountOf.has("instance"), "The Provider should be 'test'"); }); });