73 lines · 2.9 KB · TypeScript
RawDownload
import { scopeThreadRef } from "@t3tools/client-runtime/environment";import { EnvironmentId, ThreadId, RunId } from "@t3tools/contracts";import { beforeEach, describe, expect, it } from "vite-plus/test"; import { selectThreadDiffPanelSelection, useDiffPanelStore } from "./diffPanelStore"; const THREAD_REF = scopeThreadRef(EnvironmentId.make("environment-1"), ThreadId.make("thread-1")); describe("diffPanelStore", () => {  beforeEach(() =>    useDiffPanelStore.setState({      byThreadKey: {},      branchBaseRefByThreadKey: {},    }),  );   it("defaults each thread to branch changes when the working tree is clean", () => {    expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({ kind: "branch", baseRef: null });  });   it("clears incompatible selection fields when changing scopes", () => {    const store = useDiffPanelStore.getState();    store.selectTurn(THREAD_REF, RunId.make("turn-1"), "src/app.ts");    store.selectGitScope(THREAD_REF, "unstaged");     expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({ kind: "unstaged" });     useDiffPanelStore.getState().selectBranchBaseRef(THREAD_REF, " origin/main ");    expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({ kind: "branch", baseRef: "origin/main" });  });   it("increments the reveal request when opening the same turn file again", () => {    const turnId = RunId.make("turn-1");    useDiffPanelStore.getState().selectTurn(THREAD_REF, turnId, "src/app.ts");    useDiffPanelStore.getState().selectTurn(THREAD_REF, turnId, "src/app.ts");     expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({ kind: "turn", turnId, filePath: "src/app.ts", revealRequestId: 2 });  });   it("restores the selected branch base after visiting another scope", () => {    useDiffPanelStore.getState().selectBranchBaseRef(THREAD_REF, "origin/main");    useDiffPanelStore.getState().selectGitScope(THREAD_REF, "unstaged");    useDiffPanelStore.getState().selectGitScope(THREAD_REF, "branch");     expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({ kind: "branch", baseRef: "origin/main" });  });   it("reconciles a missing turn selection to the latest available turn", () => {    const missingTurnId = RunId.make("turn-missing");    const latestTurnId = RunId.make("turn-latest");    useDiffPanelStore.getState().selectTurn(THREAD_REF, missingTurnId, "src/app.ts");    useDiffPanelStore.getState().reconcileTurnSelection(THREAD_REF, [latestTurnId]);     expect(      selectThreadDiffPanelSelection(useDiffPanelStore.getState().byThreadKey, THREAD_REF),    ).toEqual({      kind: "turn",      turnId: latestTurnId,      filePath: "src/app.ts",      revealRequestId: 1,    });  });});