返回 DeepSeek-Reasonix
keyed-resource.test.ts
根目录 / desktop / frontend / src / __tests__ / keyed-resource.test.ts
1 import {
2 beginKeyedResourceRequest,
3 emptyKeyedResource,
4 rejectKeyedResourceRequest,
5 resolveKeyedResourceRequest,
6 } from "../lib/keyedResource";
7
8 let passed = 0;
9 let failed = 0;
10 function check(value: boolean, label: string) {
11 if (value) { passed += 1; process.stdout.write(` PASS ${label}\n`); }
12 else { failed += 1; process.stdout.write(` FAIL ${label}\n`); }
13 }
14
15 console.log("\nkeyed stale-while-revalidate resource");
16 let state = beginKeyedResourceRequest(emptyKeyedResource<string>(), "a", 1, 1);
17 state = resolveKeyedResourceRequest(state, "a", 1, "first", 1);
18 state = beginKeyedResourceRequest(state, "a", 2, 2);
19 check(state.data === "first" && state.status === "refreshing", "same-key refresh keeps painted data");
20 const stale = resolveKeyedResourceRequest(state, "a", 1, "stale", 1);
21 check(stale === state, "stale completion is ignored by sequence");
22 state = rejectKeyedResourceRequest(state, "a", 2, "offline");
23 check(state.data === "first" && state.status === "error", "refresh error preserves painted data");
24 state = beginKeyedResourceRequest(state, "b", 3, 3);
25 check(state.data === null && state.status === "refreshing", "new key starts without unrelated data");
26 check(failed === 0, `${passed} resource assertions passed`);
27 if (failed > 0) process.exit(1);
28
28 lines TYPESCRIPT