mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-27 17:58:07 +00:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { importSummary, parseImportSessions } from "./session-import";
|
|
|
|
describe("parseImportSessions", () => {
|
|
it("accepts a single exported session", () => {
|
|
expect(parseImportSessions('{"id":"session-1","messages":[]}')).toEqual([
|
|
{ id: "session-1", messages: [] },
|
|
]);
|
|
});
|
|
|
|
it("accepts arrays and wrapped session exports", () => {
|
|
const sessions = [{ id: "one" }, { id: "two" }];
|
|
expect(parseImportSessions(JSON.stringify(sessions))).toEqual(sessions);
|
|
expect(parseImportSessions(JSON.stringify({ sessions }))).toEqual(sessions);
|
|
});
|
|
|
|
it("accepts JSONL session exports", () => {
|
|
expect(parseImportSessions('{"id":"one"}\n\n{"id":"two"}\n')).toEqual([
|
|
{ id: "one" },
|
|
{ id: "two" },
|
|
]);
|
|
});
|
|
|
|
it("rejects empty files and non-object entries", () => {
|
|
expect(() => parseImportSessions(" \n")).toThrow("File is empty");
|
|
expect(() => parseImportSessions('[{"id":"one"},42]')).toThrow(
|
|
"Expected exported session JSON or JSONL",
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("importSummary", () => {
|
|
it("includes skipped and detached counts only when present", () => {
|
|
expect(
|
|
importSummary({
|
|
ok: true,
|
|
imported: 2,
|
|
skipped: 1,
|
|
detached: 1,
|
|
imported_ids: ["one", "two"],
|
|
skipped_ids: ["existing"],
|
|
errors: [],
|
|
}),
|
|
).toBe("2 imported; 1 skipped; 1 detached from missing parents");
|
|
});
|
|
});
|