test: preserve raw exit edits during tab state sync
This commit is contained in:
@@ -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()
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user