chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
// Manager is a singleton that depends on DB, scanner, and loader.
|
||||
// We test the module structure and type contracts here.
|
||||
// Full lifecycle tests require integration setup with SQLite.
|
||||
|
||||
import { pluginManager } from "../../src/lib/plugins/manager.ts";
|
||||
|
||||
// ── Singleton ──
|
||||
|
||||
test("pluginManager is a singleton", () => {
|
||||
const a = pluginManager;
|
||||
const b = pluginManager;
|
||||
assert.strictEqual(a, b);
|
||||
});
|
||||
|
||||
test("pluginManager has all lifecycle methods", () => {
|
||||
assert.equal(typeof pluginManager.install, "function");
|
||||
assert.equal(typeof pluginManager.activate, "function");
|
||||
assert.equal(typeof pluginManager.deactivate, "function");
|
||||
assert.equal(typeof pluginManager.uninstall, "function");
|
||||
assert.equal(typeof pluginManager.scan, "function");
|
||||
assert.equal(typeof pluginManager.loadAll, "function");
|
||||
assert.equal(typeof pluginManager.getLoaded, "function");
|
||||
assert.equal(typeof pluginManager.listAll, "function");
|
||||
assert.equal(typeof pluginManager.getPlugin, "function");
|
||||
});
|
||||
|
||||
test("pluginManager.getLoaded returns undefined for unknown plugin", () => {
|
||||
const result = pluginManager.getLoaded("nonexistent-plugin");
|
||||
assert.equal(result, undefined);
|
||||
});
|
||||
|
||||
test("pluginManager.install throws for invalid directory", async () => {
|
||||
await assert.rejects(
|
||||
() => pluginManager.install("/nonexistent/path"),
|
||||
(err: Error) => {
|
||||
assert.ok(err.message.includes("No valid plugin found"));
|
||||
return true;
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test("pluginManager.activate throws for unknown plugin", async () => {
|
||||
await assert.rejects(() => pluginManager.activate("nonexistent-plugin"));
|
||||
});
|
||||
|
||||
test("pluginManager.uninstall throws for unknown plugin", async () => {
|
||||
await assert.rejects(() => pluginManager.uninstall("nonexistent-plugin"));
|
||||
});
|
||||
Reference in New Issue
Block a user