test: preserve raw exit edits during tab state sync

This commit is contained in:
lucaronin
2026-05-13 04:06:34 +02:00
parent 502077170d
commit 83cf82294c

View File

@@ -4,6 +4,8 @@ import type { Tab } from '../hooks/useTabManagement'
import {
applyPendingRawExitContent,
rememberPendingRawExitContent,
resolvePendingRawExitContent,
resolveRawModeContent,
syncActiveTabIntoRawBuffer,
} from './editorRawModeSync'
@@ -210,4 +212,31 @@ describe('raw-mode sync content guards', () => {
expect(result).toEqual({ path: mockEntry.path, content: editedContent })
expect(onContentChange).toHaveBeenCalledWith(mockEntry.path, editedContent)
})
it('keeps raw exit edits available until parent tab state catches up', () => {
const editedContent = `${normalizedContent}\nEdited before switching tabs\n`
const { result: pendingRawExitContent } = rememberRawExit(editedContent)
expect(pendingRawExitContent).not.toBeNull()
expect(applyPendingRawExitContent([mockTab, otherTab], pendingRawExitContent)[0]).toEqual({
...mockTab,
content: editedContent,
})
expect(resolveRawModeContent({
activeTab: mockTab,
rawModeContentOverride: pendingRawExitContent,
})).toBe(editedContent)
expect(resolvePendingRawExitContent({
activeTabPath: mockEntry.path,
tabs: [mockTab, otherTab],
pendingRawExitContent,
})).toEqual(pendingRawExitContent)
expect(resolvePendingRawExitContent({
activeTabPath: mockEntry.path,
tabs: [{ ...mockTab, content: editedContent }, otherTab],
pendingRawExitContent,
})).toBeNull()
})
})