MCPcopy Create free account
hub / github.com/scriptscat/scriptcat / createMockOPFS

Function createMockOPFS

src/app/repo/test-helpers.ts:6–78  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

4 * Mock OPFS 文件系统,供多个测试文件复用
5 */
6export function createMockOPFS() {
7 function createMockWritable() {
8 let data: any = null;
9 return {
10 write: vi.fn(async (content: any) => {
11 data = content;
12 }),
13 close: vi.fn(async () => {}),
14 getData: () => data,
15 };
16 }
17
18 function createMockFileHandle(name: string, dir: Map<string, any>) {
19 return {
20 kind: "file" as const,
21 getFile: vi.fn(async () => {
22 const content = dir.get(name);
23 if (typeof content === "string") return new Blob([content], { type: "application/json" });
24 return new Blob([""], { type: "application/json" });
25 }),
26 createWritable: vi.fn(async () => {
27 const writable = createMockWritable();
28 const origClose = writable.close;
29 writable.close = vi.fn(async () => {
30 const written = writable.getData();
31 dir.set(name, written);
32 await origClose();
33 });
34 return writable;
35 }),
36 };
37 }
38
39 function createMockDirHandle(store: Map<string, any>): any {
40 return {
41 kind: "directory" as const,
42 getDirectoryHandle: vi.fn(async (name: string, opts?: { create?: boolean }) => {
43 if (!store.has("__dir__" + name)) {
44 if (opts?.create) {
45 store.set("__dir__" + name, new Map());
46 } else {
47 throw new Error("Not found");
48 }
49 }
50 return createMockDirHandle(store.get("__dir__" + name));
51 }),
52 getFileHandle: vi.fn(async (name: string, opts?: { create?: boolean }) => {
53 if (!store.has(name) && !opts?.create) {
54 throw new Error("Not found");
55 }
56 if (!store.has(name)) {
57 store.set(name, "");
58 }
59 return createMockFileHandle(name, store);
60 }),
61 removeEntry: vi.fn(async (name: string) => {
62 store.delete(name);
63 store.delete("__dir__" + name);

Callers 1

agent_task.test.tsFile · 0.90

Calls 2

fnMethod · 0.80
createMockDirHandleFunction · 0.70

Tested by

no test coverage detected