mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-18 19:50:38 +09:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
|
|
import { describe, expect, it } from "vitest";
|
||
|
|
import { applyAgentSkillSnapshot } from "./agent-skills-state";
|
||
|
|
|
||
|
|
describe("applyAgentSkillSnapshot", () => {
|
||
|
|
it("hydrates the initial snapshot without arming autosave", () => {
|
||
|
|
const result = applyAgentSkillSnapshot(
|
||
|
|
{
|
||
|
|
draft: [],
|
||
|
|
lastSaved: [],
|
||
|
|
hasHydratedSnapshot: false,
|
||
|
|
},
|
||
|
|
["paperclip", "para-memory-files"],
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(result).toEqual({
|
||
|
|
draft: ["paperclip", "para-memory-files"],
|
||
|
|
lastSaved: ["paperclip", "para-memory-files"],
|
||
|
|
hasHydratedSnapshot: true,
|
||
|
|
shouldSkipAutosave: true,
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
it("keeps unsaved local edits when a fresh snapshot arrives", () => {
|
||
|
|
const result = applyAgentSkillSnapshot(
|
||
|
|
{
|
||
|
|
draft: ["paperclip", "custom-skill"],
|
||
|
|
lastSaved: ["paperclip"],
|
||
|
|
hasHydratedSnapshot: true,
|
||
|
|
},
|
||
|
|
["paperclip"],
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(result).toEqual({
|
||
|
|
draft: ["paperclip", "custom-skill"],
|
||
|
|
lastSaved: ["paperclip"],
|
||
|
|
hasHydratedSnapshot: true,
|
||
|
|
shouldSkipAutosave: false,
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
it("adopts server state after a successful save and skips the follow-up autosave pass", () => {
|
||
|
|
const result = applyAgentSkillSnapshot(
|
||
|
|
{
|
||
|
|
draft: ["paperclip", "custom-skill"],
|
||
|
|
lastSaved: ["paperclip", "custom-skill"],
|
||
|
|
hasHydratedSnapshot: true,
|
||
|
|
},
|
||
|
|
["paperclip", "custom-skill"],
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(result).toEqual({
|
||
|
|
draft: ["paperclip", "custom-skill"],
|
||
|
|
lastSaved: ["paperclip", "custom-skill"],
|
||
|
|
hasHydratedSnapshot: true,
|
||
|
|
shouldSkipAutosave: true,
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|