mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-04 19:45:34 +08:00
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { fireEvent, render, screen } from "@testing-library/react";
|
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import PromptPanel from "@/components/prompts/PromptPanel";
|
|
|
|
const mocks = vi.hoisted(() => ({
|
|
reconcilePiLibrary: vi.fn(),
|
|
reload: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("react-i18next", () => ({
|
|
useTranslation: () => ({
|
|
t: (key: string) => key,
|
|
}),
|
|
}));
|
|
|
|
vi.mock("@/hooks/useTauriEvent", () => ({
|
|
useTauriEvent: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("@/components/prompts/PiNativePromptResources", () => ({
|
|
PiNativePromptResources: () => <div>native resources</div>,
|
|
}));
|
|
|
|
vi.mock("@/hooks/usePromptActions", () => ({
|
|
usePromptActions: () => ({
|
|
prompts: {},
|
|
loading: false,
|
|
currentFileContent: "external native content",
|
|
piLibraryStatus: {
|
|
nativeExists: true,
|
|
nativeRevision: "native-revision",
|
|
matchedPromptId: null,
|
|
needsReconciliation: true,
|
|
},
|
|
reload: mocks.reload,
|
|
savePrompt: vi.fn(),
|
|
deletePrompt: vi.fn(),
|
|
enablePrompt: vi.fn(),
|
|
toggleEnabled: vi.fn(),
|
|
importFromFile: vi.fn(),
|
|
reconcilePiLibrary: mocks.reconcilePiLibrary,
|
|
}),
|
|
}));
|
|
|
|
describe("PromptPanel Pi native reconciliation", () => {
|
|
beforeEach(() => {
|
|
mocks.reconcilePiLibrary.mockReset();
|
|
mocks.reconcilePiLibrary.mockResolvedValue(undefined);
|
|
mocks.reload.mockReset();
|
|
});
|
|
|
|
it("shows native drift and exposes the explicit reconciliation action", () => {
|
|
render(<PromptPanel open appId="pi" onOpenChange={vi.fn()} />);
|
|
|
|
expect(
|
|
screen.getByText("pi.prompts.libraryDriftTitle"),
|
|
).toBeInTheDocument();
|
|
expect(
|
|
screen.getByText("pi.prompts.libraryDriftNative"),
|
|
).toBeInTheDocument();
|
|
|
|
fireEvent.click(
|
|
screen.getByRole("button", { name: "pi.prompts.reconcileLibrary" }),
|
|
);
|
|
expect(mocks.reconcilePiLibrary).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|