Expose project-wide history controls

This commit is contained in:
2026-07-25 23:16:46 +02:00
parent b2763f72d5
commit 59d442593f
8 changed files with 146 additions and 86 deletions
+24 -1
View File
@@ -6,9 +6,12 @@ import { ProjectVersionHistory } from "../src/frontend/components/project-versio
import type { ProjectRevisionSummaryDto } from "../src/frontend/types.js";
import {
createNamedProjectSnapshot,
getProjectHistory,
listProjectRevisions,
listProjectSnapshots,
redoProjectCommand,
restoreProjectSnapshot,
undoProjectCommand,
} from "../src/frontend/utils/api.js";
import {
getProjectRevisionDescription,
@@ -40,11 +43,13 @@ describe("project version history presentation", () => {
createElement(ProjectVersionHistory, {
projectId: "project-1",
currentRevision: 42,
onRestoreComplete: () => undefined,
onProjectStateChange: () => undefined,
})
);
assert.match(markup, /Versionen und Sicherungspunkte/);
assert.match(markup, /Aktuelle Revision 42/);
assert.match(markup, /Rückgängig/);
assert.match(markup, /Wiederholen/);
assert.match(markup, /Anzeigen/);
assert.doesNotMatch(markup, /Stand speichern/);
});
@@ -108,6 +113,7 @@ describe("project version history API", () => {
};
try {
await getProjectHistory("project-1");
await listProjectRevisions("project-1", {
limit: 10,
beforeRevision: 21,
@@ -120,11 +126,18 @@ describe("project version history API", () => {
"Vor Ausführung"
);
await restoreProjectSnapshot("project-1", "snapshot-1", 22);
await undoProjectCommand("project-1", 23);
await redoProjectCommand("project-1", 24);
} finally {
globalThis.fetch = originalFetch;
}
assert.deepEqual(requests, [
{
url: "/api/projects/project-1/history",
method: "GET",
body: null,
},
{
url: "/api/projects/project-1/history/revisions?limit=10&beforeRevision=21",
method: "GET",
@@ -149,6 +162,16 @@ describe("project version history API", () => {
method: "POST",
body: { expectedRevision: 22 },
},
{
url: "/api/projects/project-1/history/undo",
method: "POST",
body: { expectedRevision: 23 },
},
{
url: "/api/projects/project-1/history/redo",
method: "POST",
body: { expectedRevision: 24 },
},
]);
});
});