import { fireEvent, render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { PromptDrawer } from "@/components/decision/PromptDrawer";
describe("PromptDrawer truth labels", () => {
const prompt = {
promptRef: "prompt:event:50",
actor: { role: "implementer" as const, label: "实现 Agent" },
exactTask: { content: "补齐烹饪步骤", accuracy: "run-exact" as const },
systemPrompt: {
content: "按当前实现 Agent 规则完成任务。",
source: "current-db" as const,
version: 8,
accuracy: "current-not-run-snapshot" as const,
truncated: false,
},
notices: [{
code: "PROMPT_NOT_SNAPSHOTTED",
message: "系统没有保存这次运行所用提示词的历史快照;下方展示当前提示词。",
}],
};
it("separates the exact run task from the current rule version", () => {
render();
expect(screen.getByRole("heading", { name: "本次真实任务" })).toBeInTheDocument();
expect(screen.getByText("补齐烹饪步骤")).toBeInTheDocument();
expect(screen.getByRole("heading", { name: "当前提示词" })).toBeInTheDocument();
expect(screen.getByText("当前数据库版本 · v8")).toBeInTheDocument();
expect(screen.getByText(/没有保存这次运行所用提示词的历史快照/)).toBeInTheDocument();
expect(screen.queryByText("当次运行完整 Prompt")).not.toBeInTheDocument();
});
it("closes with Escape and starts focus on the close button", () => {
const onClose = vi.fn();
render();
expect(screen.getByRole("button", { name: "关闭提示词" })).toHaveFocus();
fireEvent.keyDown(window, { key: "Escape" });
expect(onClose).toHaveBeenCalledTimes(1);
});
});