Skip to content

Commit 74f8e5b

Browse files
committed
test(webview): cover prompt history content updates
1 parent af788e7 commit 74f8e5b

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

‎webview-ui/src/components/chat/hooks/__tests__/usePromptHistory.spec.ts‎

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ClineMessage, HistoryItem } from "@roo-code/types"
22
import { act, renderHook } from "@testing-library/react"
33

4-
import { usePromptHistory } from "../usePromptHistory"
4+
import { usePromptHistory, type UsePromptHistoryReturn } from "../usePromptHistory"
55

66
describe("usePromptHistory", () => {
77
it("resets navigation when switching to conversation history with identical prompts", () => {
@@ -21,10 +21,7 @@ describe("usePromptHistory", () => {
2121
const conversationHistory: ClineMessage[] = [{ ts: 2, type: "say", say: "user_feedback", text: prompt }]
2222
const setInputValue = vi.fn()
2323

24-
const { result, rerender } = renderHook<
25-
ReturnType<typeof usePromptHistory>,
26-
{ clineMessages: ClineMessage[] | undefined }
27-
>(
24+
const { result, rerender } = renderHook<UsePromptHistoryReturn, { clineMessages: ClineMessage[] | undefined }>(
2825
({ clineMessages }) =>
2926
usePromptHistory({
3027
clineMessages,
@@ -51,4 +48,37 @@ describe("usePromptHistory", () => {
5148
expect(result.current.historyIndex).toBe(-1)
5249
expect(result.current.tempInput).toBe("")
5350
})
51+
52+
it("resets navigation when the current history source gains a prompt", () => {
53+
const firstPrompt = "Explain this code"
54+
const secondPrompt = "Now simplify it"
55+
const initialHistory: ClineMessage[] = [{ ts: 1, type: "say", say: "user_feedback", text: firstPrompt }]
56+
const updatedHistory: ClineMessage[] = [
57+
...initialHistory,
58+
{ ts: 2, type: "say", say: "user_feedback", text: secondPrompt },
59+
]
60+
61+
const { result, rerender } = renderHook<UsePromptHistoryReturn, { clineMessages: ClineMessage[] }>(
62+
({ clineMessages }) =>
63+
usePromptHistory({
64+
clineMessages,
65+
taskHistory: undefined,
66+
cwd: "/workspace",
67+
inputValue: "draft",
68+
setInputValue: vi.fn(),
69+
}),
70+
{ initialProps: { clineMessages: initialHistory } },
71+
)
72+
73+
act(() => {
74+
result.current.setHistoryIndex(0)
75+
result.current.setTempInput("draft")
76+
})
77+
78+
rerender({ clineMessages: updatedHistory })
79+
80+
expect(result.current.promptHistory).toEqual([secondPrompt, firstPrompt])
81+
expect(result.current.historyIndex).toBe(-1)
82+
expect(result.current.tempInput).toBe("")
83+
})
5484
})

0 commit comments

Comments
 (0)