Files
Jyotisha/frontend/tests/personal-report-longform-appendix.test.ts
T
Jesse_Chen bab0718700
Independent Staging Quality Gate / validate (push) Failing after 9m41s
Independent Staging Quality Gate / publish (push) Has been skipped
feat(report): ship full-mode longform appendix beside the five-chapter report
Web export now calls the same full pack as the long skill report and caches an owner-only Markdown download. Appendix failure stays unavailable and does not change the main report status.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 11:10:44 +08:00

58 lines
2.0 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
hashLongformMarkdown,
nextLongformAppendixState,
parseLongformAppendixRow,
} from "../src/lib/personal-report-longform-appendix.ts";
test("hashLongformMarkdown is stable sha256", () => {
assert.equal(hashLongformMarkdown("# a"), hashLongformMarkdown("# a"));
assert.equal(hashLongformMarkdown("# a").length, 64);
assert.notEqual(hashLongformMarkdown("# a"), hashLongformMarkdown("# b"));
});
test("parseLongformAppendixRow rejects foreign or incomplete rows", () => {
assert.equal(parseLongformAppendixRow(null), null);
assert.equal(parseLongformAppendixRow({ status: "ready" }), null);
assert.equal(parseLongformAppendixRow({
report_id: "123e4567-e89b-12d3-a456-426614174000",
user_id: "user-1",
request_id: "123e4567-e89b-12d3-a456-426614174001",
status: "ready",
markdown: "# Full",
})?.status, "ready");
});
test("nextLongformAppendixState marks unavailable after two failures and never stores error bodies", () => {
const first = nextLongformAppendixState({ current: null, errorCode: "upstream_unavailable" });
assert.equal(first.status, "pending");
assert.equal(first.attemptCount, 1);
assert.equal(first.markdown, null);
assert.equal(first.lastErrorCode, "upstream_unavailable");
const second = nextLongformAppendixState({
current: {
reportId: "r",
userId: "u",
requestId: "q",
status: "pending",
markdown: null,
contentSha256: null,
attemptCount: 1,
lastErrorCode: "upstream_unavailable",
},
errorCode: "empty_markdown",
});
assert.equal(second.status, "unavailable");
assert.equal(second.attemptCount, 2);
assert.equal(second.markdown, null);
const ready = nextLongformAppendixState({ current: null, successMarkdown: "# Full" });
assert.equal(ready.status, "ready");
assert.equal(ready.markdown, "# Full");
assert.equal(ready.contentSha256, hashLongformMarkdown("# Full"));
assert.equal(ready.lastErrorCode, null);
});