nope/lib/plugins/plugin.spec.ts

68 lines
2.4 KiB
TypeScript
Raw Permalink Normal View History

import { assert } from "chai";
import { describe, it } from "mocha";
import { availablePlugins } from "./index";
import { allPlugins, installPlugins, plugin } from "./plugin";
describe("PluginSystem", function () {
// Describe the required Test:
it("List Plugins", function () {
assert(allPlugins().length == 2, "There Should be to Plugins");
});
describe("load single Plugins", function () {
it("by-name", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
installPlugins(nope, "hello", false);
delete require.cache[require.resolve("../index.nodejs")];
});
it("by-path", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
installPlugins(nope, "plugins.availablePlugins.hello", false);
delete require.cache[require.resolve("../index.nodejs")];
});
it("by-plugin", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
installPlugins(nope, availablePlugins.hello, false);
delete require.cache[require.resolve("../index.nodejs")];
});
it("dynamic-plugin", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
const extend = plugin("generateId", (org) => {
return [
{
adapted: (...args) => {
return org(...args);
},
name: "generateId",
path: "generateId",
},
];
});
installPlugins(nope, extend, false);
delete require.cache[require.resolve("../index.nodejs")];
});
});
describe("load single Plugins", function () {
it("single-list-item", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
installPlugins(nope, ["hello"], false);
delete require.cache[require.resolve("../index.nodejs")];
});
it("by-path", function () {
delete require.cache[require.resolve("../index.nodejs")];
const nope = require("../index.nodejs");
installPlugins(
nope,
["hello", "plugins.availablePlugins.hello", availablePlugins.hello],
false
);
delete require.cache[require.resolve("../index.nodejs")];
});
});
});