mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 07:05:24 +00:00
feat: convert network-topology to a full plugin (B1)
This commit is contained in:
1 parent
95abe24798
commit
fdedca39fd
51 files changed
+30321
-814
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
||||
import { createTestDb, type TestDb } from "@termix/plugin-sdk/testing";
|
||||
import { graphs } from "../../src/backend/tables.js";
|
||||
import {
|
||||
createGraphRepository,
|
||||
type GraphRepository,
|
||||
} from "../../src/backend/repository.js";
|
||||
import { pluginDir } from "./helpers";
|
||||
|
||||
let db: TestDb;
|
||||
let repo: GraphRepository;
|
||||
|
||||
beforeEach(async () => {
|
||||
db = await createTestDb(pluginDir, {
|
||||
before: (sqlite) =>
|
||||
sqlite.exec("INSERT INTO users (id) VALUES ('user-1'), ('user-2')"),
|
||||
});
|
||||
repo = createGraphRepository(db.database, await db.database.define(graphs));
|
||||
});
|
||||
|
||||
afterEach(() => db.close());
|
||||
|
||||
describe("graph repository", () => {
|
||||
it("finds, creates, and updates topology by user id", async () => {
|
||||
expect(await repo.findByUserId("user-1")).toBeNull();
|
||||
|
||||
await repo.upsertForUser(
|
||||
"user-1",
|
||||
JSON.stringify({ nodes: [{ id: "host-1" }], edges: [] }),
|
||||
);
|
||||
expect(await repo.findByUserId("user-1")).toMatchObject({
|
||||
userId: "user-1",
|
||||
topology: '{"nodes":[{"id":"host-1"}],"edges":[]}',
|
||||
});
|
||||
|
||||
await repo.upsertForUser(
|
||||
"user-1",
|
||||
JSON.stringify({ nodes: [], edges: [{ id: "edge-1" }] }),
|
||||
);
|
||||
expect(await repo.findByUserId("user-1")).toMatchObject({
|
||||
userId: "user-1",
|
||||
topology: '{"nodes":[],"edges":[{"id":"edge-1"}]}',
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps rows for different users separate", async () => {
|
||||
await repo.upsertForUser("user-1", '{"nodes":[]}');
|
||||
await repo.upsertForUser("user-2", '{"nodes":["a"]}');
|
||||
|
||||
expect((await repo.findByUserId("user-1"))?.topology).toBe('{"nodes":[]}');
|
||||
expect((await repo.findByUserId("user-2"))?.topology).toBe(
|
||||
'{"nodes":["a"]}',
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user