Buckets:
| import { beforeAll, describe, expect, mock, test } from "bun:test" | |
| let shouldListRoot: typeof import("./file-tree").shouldListRoot | |
| let shouldListExpanded: typeof import("./file-tree").shouldListExpanded | |
| let dirsToExpand: typeof import("./file-tree").dirsToExpand | |
| beforeAll(async () => { | |
| mock.module("@solidjs/router", () => ({ | |
| useNavigate: () => () => undefined, | |
| useParams: () => ({}), | |
| useLocation: () => ({}), | |
| useSearchParams: () => [{}, () => undefined], | |
| })) | |
| mock.module("@/context/file", () => ({ | |
| useFile: () => ({ | |
| tree: { | |
| state: () => undefined, | |
| list: () => Promise.resolve(), | |
| children: () => [], | |
| expand: () => {}, | |
| collapse: () => {}, | |
| }, | |
| }), | |
| })) | |
| mock.module("@opencode-ai/ui/collapsible", () => ({ | |
| Collapsible: { | |
| Trigger: (props: { children?: unknown }) => props.children, | |
| Content: (props: { children?: unknown }) => props.children, | |
| }, | |
| })) | |
| mock.module("@opencode-ai/ui/file-icon", () => ({ FileIcon: () => null })) | |
| mock.module("@opencode-ai/ui/icon", () => ({ Icon: () => null })) | |
| mock.module("@opencode-ai/ui/tooltip", () => ({ Tooltip: (props: { children?: unknown }) => props.children })) | |
| const mod = await import("./file-tree") | |
| shouldListRoot = mod.shouldListRoot | |
| shouldListExpanded = mod.shouldListExpanded | |
| dirsToExpand = mod.dirsToExpand | |
| }) | |
| describe("file tree fetch discipline", () => { | |
| test("root lists on mount unless already loaded or loading", () => { | |
| expect(shouldListRoot({ level: 0 })).toBe(true) | |
| expect(shouldListRoot({ level: 0, dir: { loaded: true } })).toBe(false) | |
| expect(shouldListRoot({ level: 0, dir: { loading: true } })).toBe(false) | |
| expect(shouldListRoot({ level: 1 })).toBe(false) | |
| }) | |
| test("nested dirs list only when expanded and stale", () => { | |
| expect(shouldListExpanded({ level: 1 })).toBe(false) | |
| expect(shouldListExpanded({ level: 1, dir: { expanded: false } })).toBe(false) | |
| expect(shouldListExpanded({ level: 1, dir: { expanded: true } })).toBe(true) | |
| expect(shouldListExpanded({ level: 1, dir: { expanded: true, loaded: true } })).toBe(false) | |
| expect(shouldListExpanded({ level: 1, dir: { expanded: true, loading: true } })).toBe(false) | |
| expect(shouldListExpanded({ level: 0, dir: { expanded: true } })).toBe(false) | |
| }) | |
| test("allowed auto-expand picks only collapsed dirs", () => { | |
| const expanded = new Set<string>() | |
| const filter = { dirs: new Set(["src", "src/components"]) } | |
| const first = dirsToExpand({ | |
| level: 0, | |
| filter, | |
| expanded: (dir) => expanded.has(dir), | |
| }) | |
| expect(first).toEqual(["src", "src/components"]) | |
| for (const dir of first) expanded.add(dir) | |
| const second = dirsToExpand({ | |
| level: 0, | |
| filter, | |
| expanded: (dir) => expanded.has(dir), | |
| }) | |
| expect(second).toEqual([]) | |
| expect(dirsToExpand({ level: 1, filter, expanded: () => false })).toEqual([]) | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 2.95 kB
- Xet hash:
- eb0d548195695657b0d5b28a59a2edd049cfff002332a1ac0b89ebd8eafb7dd4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.