feat: publish Velum copies beside project folder

This commit is contained in:
muena
2026-09-27 08:58:40 +02:00
parent 23af4993db
commit ec327a5220
6 changed files with 95 additions and 21 deletions

View File

@@ -53,6 +53,29 @@ describe("Velum-Projektstände", () => {
.toEqual([first.run.id, second.run.id].sort());
});
it("legt pseudonymisierte Kopien neben dem Projekt ab und behält die Tabelle privat", async () => {
const root = await fs.mkdtemp(join(tmpdir(), "velum-sibling-copy-test-"));
roots.push(root);
const source = join(root, "Quelle");
const support = join(root, "Raycast");
await fs.mkdir(source);
const created = await project.createRun(source, support);
created.run.mapping = { PERSON_01: { original: "Max Mustermann", type: "PERSON" } };
created.run.files = [{ source: "Unterordner/Name.txt", output: "Unterordner/PERSON_01.txt", kind: "text" }];
await fs.mkdir(join(created.directory, "files", "Unterordner"));
await fs.writeFile(join(created.directory, "files", "Unterordner", "PERSON_01.txt"), "PERSON_01");
const copyPath = await project.publishProjectCopies(created.run, created.directory);
created.run.copyPath = copyPath;
await project.saveRun(created.directory, created.run);
expect(copyPath.startsWith(join(root, "Quelle-Velum-"))).toBe(true);
expect(project.runCopiesPath(created.run, created.directory)).toBe(copyPath);
expect(await fs.readFile(join(copyPath, "Unterordner", "PERSON_01.txt"), "utf8")).toBe("PERSON_01");
expect(await fs.readdir(copyPath)).toEqual(["Unterordner"]);
expect(await fs.readFile(join(created.directory, "run.json"), "utf8")).toContain("Max Mustermann");
await expect(project.publishProjectCopies(created.run, created.directory)).rejects.toThrow("bereits vorhanden");
expect((await project.listRuns(source, support))[0].run.copyPath).toBe(copyPath);
});
it("behält die Kategorieauswahl pro Projekt für den nächsten Lauf", async () => {
const root = await fs.mkdtemp(join(tmpdir(), "velum-entity-types-test-"));
roots.push(root);