From 83cf82294c1f9027778b424220dcccda35bfb81a Mon Sep 17 00:00:00 2001 From: lucaronin Date: Wed, 13 May 2026 04:06:34 +0200 Subject: [PATCH] test: preserve raw exit edits during tab state sync --- src/components/Editor.raw-mode-sync.test.ts | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/components/Editor.raw-mode-sync.test.ts b/src/components/Editor.raw-mode-sync.test.ts index 97a97ffd..51b9433a 100644 --- a/src/components/Editor.raw-mode-sync.test.ts +++ b/src/components/Editor.raw-mode-sync.test.ts @@ -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() + }) })