11import { ClineMessage , HistoryItem } from "@roo-code/types"
22import { act , renderHook } from "@testing-library/react"
33
4- import { usePromptHistory } from "../usePromptHistory"
4+ import { usePromptHistory , type UsePromptHistoryReturn } from "../usePromptHistory"
55
66describe ( "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