Skip to content

Commit 291b711

Browse files
committed
test(views): 补第三视图键的记忆持久化覆盖
1 parent 01a381c commit 291b711

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

‎app/src/views/useViewMemory.test.ts‎

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ import type { ObjectType } from "./registry";
2020
import { VIEW_MEMORY_PREFIX, readViewMemory, useViewMemory, viewMemoryKey, writeViewMemory } from "./useViewMemory";
2121

2222
const SESSION_KEYS = ["raw", "tritrack", "proof", "cardflow", "preview"] as const;
23-
const NOTE_KEYS = ["raw", "cardflow"] as const;
23+
// 与注册表真源 `registry.ts` 的 `FROZEN_VIEW_KEYS.note` **逐字同步**(`evidence` = 批 8 T8 新增的
24+
// 「带证据三轨」视图键);漏掉它 ⇒ 该视图的记忆持久化路径在本件下**零覆盖**(批 8 T31 补)。
25+
const NOTE_KEYS = ["raw", "cardflow", "evidence"] as const;
2426

2527
/** 记录键集合的内存 `Storage` 桩(M5 要「全程键集合」这个观测面)。 */
2628
function memoryStorage(seed: Record<string, string> = {}): { storage: Storage; keys: () => string[] } {
@@ -122,6 +124,28 @@ describe("M1 初始值取记忆(有则取之、无则默认);写后重挂
122124
});
123125
});
124126

127+
describe("M1 补 · 笔记第三视图键 `evidence`(批 8 T8 新增)的记忆路径", () => {
128+
it("`evidence` 是合法存值:读接受 → 挂载取回 → 写后重挂载恢复原键", () => {
129+
// 反向对照:夹具若漏了这个键,`readViewMemory` 会把它当垃圾值 ⇒ 头一条断言当场红
130+
const seeded = memoryStorage({ "view:default:note": "evidence" });
131+
expect(readViewMemory("note", NOTE_KEYS, seeded.storage), "`evidence` 必须被 `NOTE_KEYS` 接受").toBe("evidence");
132+
expect(shownKey(noteProbe(seeded.storage))).toBe("evidence");
133+
134+
// 写入那半段 = hook 的 setter 调用的同一个 `writeViewMemory`(见文件头「诚实边界」)
135+
const written = memoryStorage();
136+
writeViewMemory("note", "evidence", written.storage);
137+
expect(shownKey(noteProbe(written.storage))).toBe("evidence");
138+
expect(written.storage.getItem("view:default:note")).toBe("evidence");
139+
140+
// 夹具口径守卫:三键与注册表真源逐字相同(`evidence` 必须在场)
141+
expect(NOTE_KEYS, "`NOTE_KEYS` 必须与 `FROZEN_VIEW_KEYS.note` 逐字相同(含批 8 T8 新增的 `evidence`)").toEqual([
142+
"raw",
143+
"cardflow",
144+
"evidence",
145+
]);
146+
});
147+
});
148+
125149
describe("M2 两类互不串(键带 objectType)", () => {
126150
it("写 session 不影响 note,反之亦然;两个键各自独立落盘", () => {
127151
const s = memoryStorage();

0 commit comments

Comments
 (0)