119 lines · 2.9 KB · TypeScript
RawDownload
import { assert, beforeEach, it } from "vite-plus/test";import type { FilesystemBrowseResult } from "@t3tools/contracts";import { AtomRegistry } from "effect/unstable/reactivity"; import {  EMPTY_FILESYSTEM_BROWSE_STATE,  createFilesystemBrowseManager,} from "./filesystemBrowseState.ts"; const ROOT_RESULT: FilesystemBrowseResult = {  parentPath: "/Users/julius",  entries: [    {      name: "code",      fullPath: "/Users/julius/code",    },  ],}; let registry = AtomRegistry.make(); beforeEach(() => {  registry.dispose();  registry = AtomRegistry.make();}); function unresolvedBrowse() {  throw new Error("Browse resolver was not initialized.");} function flushAsyncWork(): Promise<void> {  return Promise.resolve().then(() => undefined);} it("stores browsed folder data in an atom snapshot", async () => {  const manager = createFilesystemBrowseManager({    getRegistry: () => registry,    getClient: () => ({      browse: async () => ROOT_RESULT,    }),  });   assert.deepStrictEqual(    manager.getSnapshot({ key: null, input: null }),    EMPTY_FILESYSTEM_BROWSE_STATE,  );   const target = { key: "env-1", input: { partialPath: "~" } };  const result = await manager.refresh(target);   assert.strictEqual(result, ROOT_RESULT);  assert.deepStrictEqual(manager.getSnapshot(target), {    data: ROOT_RESULT,    error: null,    isPending: false,  });}); it("deduplicates in-flight browse refreshes by target input", async () => {  let resolveBrowse: (result: FilesystemBrowseResult) => void = unresolvedBrowse;  let calls = 0;  const target = { key: "env-1", input: { partialPath: "~" } };  const manager = createFilesystemBrowseManager({    getRegistry: () => registry,    getClient: () => ({      browse: () => {        calls += 1;        return new Promise<FilesystemBrowseResult>((resolve) => {          resolveBrowse = resolve;        });      },    }),  });   const first = manager.refresh(target);  const second = manager.refresh(target);   assert.strictEqual(first, second);  assert.strictEqual(calls, 1);  assert.deepStrictEqual(manager.getSnapshot(target), {    data: null,    error: null,    isPending: true,  });   resolveBrowse(ROOT_RESULT);  await first;   assert.deepStrictEqual(manager.getSnapshot(target), {    data: ROOT_RESULT,    error: null,    isPending: false,  });}); it("keeps fresh watched browse results on remount", async () => {  let browseCalls = 0;  const target = { key: "env-1", input: { partialPath: "~" } };  const manager = createFilesystemBrowseManager({    getRegistry: () => registry,    getClient: () => ({      browse: async () => {        browseCalls += 1;        return ROOT_RESULT;      },    }),    staleTimeMs: 60_000,  });   const firstUnwatch = manager.watch(target);  await flushAsyncWork();  firstUnwatch();   const secondUnwatch = manager.watch(target);  await flushAsyncWork();  secondUnwatch();   assert.strictEqual(browseCalls, 1);});