From 946496c746bbecdeecf97302363fb5a5e301304f Mon Sep 17 00:00:00 2001 From: umsangdon Date: Fri, 9 Oct 2026 21:31:43 +0900 Subject: [PATCH] =?UTF-8?q?fix(b07):=20CAD=20=EC=8B=9C=EC=9E=91=20?= =?UTF-8?q?=ED=86=A0=EC=8A=A4=ED=8A=B8=20=E3=80=8C=EC=9D=B4=EC=A0=84=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=20=EB=B0=B1=EC=97=85=EC=9D=B4=20=EC=9E=88?= =?UTF-8?q?=EC=8A=B5=EB=8B=88=EB=8B=A4=E3=80=8D=20=EC=97=86=EC=95=B0=20?= =?UTF-8?q?=E2=80=94=20=EC=9E=90=EB=8F=99=20=EB=B0=B1=EC=97=85=20=C2=B7=20?= =?UTF-8?q?=EB=90=98=EC=82=B4=EB=A6=AC=EA=B8=B0=20=EB=AA=85=EB=A0=B9=20?= =?UTF-8?q?=EA=B7=B8=EB=8C=80=EB=A1=9C(159-1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL --- .../openwebcad/src/helpers/autosave.test.ts | 28 +++++++++++++++++++ .../openwebcad/src/helpers/autosave.ts | 9 +----- 2 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 B07_DesignDetail/openwebcad/src/helpers/autosave.test.ts diff --git a/B07_DesignDetail/openwebcad/src/helpers/autosave.test.ts b/B07_DesignDetail/openwebcad/src/helpers/autosave.test.ts new file mode 100644 index 000000000..bf31de0a4 --- /dev/null +++ b/B07_DesignDetail/openwebcad/src/helpers/autosave.test.ts @@ -0,0 +1,28 @@ +import { describe, expect, it, vi } from 'vitest'; + +const info = vi.fn(); +vi.mock('react-toastify', () => ({ toast: { info, success: vi.fn() } })); +vi.mock('../state', () => ({ + getEntities: () => [], + isDrawingReadOnly: () => false, + resetUndoBaseline: vi.fn(), + setActiveLayerId: vi.fn(), + setEntities: vi.fn(), + setLayers: vi.fn(), +})); + +describe('registerAutoSave', () => { + it('백업이 있어도 시작 토스트를 띄우지 않고 백업 듣기만 건다', async () => { + const addEventListener = vi.fn(); + vi.stubGlobal('window', { addEventListener }); + vi.stubGlobal('localStorage', { + getItem: () => JSON.stringify({ savedAt: 1, json: '{}' }), + setItem: vi.fn(), + removeItem: vi.fn(), + }); + const { registerAutoSave } = await import('./autosave'); + registerAutoSave(); + expect(info).not.toHaveBeenCalled(); + expect(addEventListener).toHaveBeenCalledTimes(1); + }); +}); diff --git a/B07_DesignDetail/openwebcad/src/helpers/autosave.ts b/B07_DesignDetail/openwebcad/src/helpers/autosave.ts index 439902182..65e58f4ba 100644 --- a/B07_DesignDetail/openwebcad/src/helpers/autosave.ts +++ b/B07_DesignDetail/openwebcad/src/helpers/autosave.ts @@ -107,17 +107,10 @@ export async function restoreRecovery(): Promise { toast.success(`백업을 되살렸습니다 (${new Date(file.savedAt).toLocaleString()}).`); } -/** 시작할 때 한 번 부른다. 백업이 있으면 안내만 띄우고, 되살리기는 사용자가 누른다. */ +/** 시작할 때 한 번 부른다. 시작 안내는 띄우지 않음 — 되살리기는 파일 명령으로. */ export function registerAutoSave(): void { window.addEventListener(HtmlEvent.UPDATE_STATE, () => { clearTimeout(debounceTimer); debounceTimer = setTimeout(() => void writeBackup(), AUTOSAVE_DEBOUNCE_MS); }); - - const file = readRecovery(); - if (!file) return; - toast.info( - `이전 작업 백업이 있습니다 (${new Date(file.savedAt).toLocaleString()}). 눌러서 되살리기.`, - { autoClose: false, onClick: () => void restoreRecovery() } - ); }