59 lines · 2.1 KB · TypeScript
RawDownload
import type { PreviewSessionSnapshot } from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import {  needsPreviewAutomationSessionSync,  resolvePreviewAutomationOpenTab,  resolvePreviewAutomationTarget,} from "./previewAutomationTarget"; const snapshot = (tabId: string): PreviewSessionSnapshot => ({  threadId: "thread-1",  tabId,  navStatus: { _tag: "Idle" },  canGoBack: false,  canGoForward: false,  updatedAt: "2026-01-01T00:00:00.000Z",}); describe("preview automation target selection", () => {  it("refreshes authoritative sessions whenever the caller relies on the active tab", () => {    const active = snapshot("tab-active");    expect(      needsPreviewAutomationSessionSync(        { snapshot: active, sessions: { [active.tabId]: active } },        undefined,      ),    ).toBe(true);  });   it("refreshes an explicit tab only when it is absent locally", () => {    const active = snapshot("tab-active");    const state = { snapshot: active, sessions: { [active.tabId]: active } };    expect(needsPreviewAutomationSessionSync(state, active.tabId)).toBe(false);    expect(needsPreviewAutomationSessionSync(state, "tab-missing")).toBe(true);  });   it("does not report the active tab under an unknown requested tab id", () => {    const active = snapshot("tab-active");    expect(      resolvePreviewAutomationTarget(        { snapshot: active, sessions: { [active.tabId]: active } },        "tab-missing",      ),    ).toEqual({ tabId: null, snapshot: null });  });   it("reuses the provider session's pinned tab instead of the mutable UI tab", () => {    const uiActive = snapshot("tab-ui-active");    const agentTab = snapshot("tab-opened-by-agent");    const state = {      snapshot: uiActive,      sessions: { [uiActive.tabId]: uiActive, [agentTab.tabId]: agentTab },    };     expect(resolvePreviewAutomationOpenTab(state, agentTab.tabId, true)).toBe(agentTab.tabId);    expect(resolvePreviewAutomationOpenTab(state, undefined, true)).toBe(uiActive.tabId);    expect(resolvePreviewAutomationOpenTab(state, agentTab.tabId, false)).toBeNull();  });});