mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 06:05:24 +00:00
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
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"]}',
|
|
);
|
|
});
|
|
});
|