Fix bug with clearing custom instructions

This commit is contained in:
Matt Rubens
2025-01-14 16:01:59 -05:00
parent 4493b55276
commit f2d25dd5a5
3 changed files with 35 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
"roo-cline": patch
---
Fix bug with clearing custom instructions

View File

@@ -21,7 +21,8 @@ const PromptsView = ({ onDone }: PromptsViewProps) => {
enhancementApiConfigId, enhancementApiConfigId,
setEnhancementApiConfigId, setEnhancementApiConfigId,
mode, mode,
customInstructions customInstructions,
setCustomInstructions
} = useExtensionState() } = useExtensionState()
const [testPrompt, setTestPrompt] = useState('') const [testPrompt, setTestPrompt] = useState('')
const [isEnhancing, setIsEnhancing] = useState(false) const [isEnhancing, setIsEnhancing] = useState(false)
@@ -152,6 +153,7 @@ const PromptsView = ({ onDone }: PromptsViewProps) => {
value={customInstructions ?? ''} value={customInstructions ?? ''}
onChange={(e) => { onChange={(e) => {
const value = (e as CustomEvent)?.detail?.target?.value || ((e as any).target as HTMLTextAreaElement).value const value = (e as CustomEvent)?.detail?.target?.value || ((e as any).target as HTMLTextAreaElement).value
setCustomInstructions(value || undefined)
vscode.postMessage({ vscode.postMessage({
type: "customInstructions", type: "customInstructions",
text: value.trim() || undefined text: value.trim() || undefined

View File

@@ -19,7 +19,9 @@ const mockExtensionState = {
], ],
enhancementApiConfigId: '', enhancementApiConfigId: '',
setEnhancementApiConfigId: jest.fn(), setEnhancementApiConfigId: jest.fn(),
mode: 'code' mode: 'code',
customInstructions: 'Initial instructions',
setCustomInstructions: jest.fn()
} }
const renderPromptsView = (props = {}) => { const renderPromptsView = (props = {}) => {
@@ -131,4 +133,28 @@ describe('PromptsView', () => {
text: 'config1' text: 'config1'
}) })
}) })
it('handles clearing custom instructions correctly', async () => {
const setCustomInstructions = jest.fn()
renderPromptsView({
...mockExtensionState,
customInstructions: 'Initial instructions',
setCustomInstructions
})
const textarea = screen.getByTestId('global-custom-instructions-textarea')
const changeEvent = new CustomEvent('change', {
detail: { target: { value: '' } }
})
Object.defineProperty(changeEvent, 'target', {
value: { value: '' }
})
await fireEvent(textarea, changeEvent)
expect(setCustomInstructions).toHaveBeenCalledWith(undefined)
expect(vscode.postMessage).toHaveBeenCalledWith({
type: 'customInstructions',
text: undefined
})
})
}) })