Files
Aislo/resources/tester/test_m02_drawing_card.py
T
eomsangdonandClaude Opus 5.5 6ad43ed795 feat(M02): 도면 카드 미리보기에서 단축키로 그리기 · 고치기 · 카드 [저장] · ? 도움말(PLAN 31-4)
- 새 M02_MasterTemplete_DrawingCard — 고칠 권한 + 저장 길이면 CAD 를 고치기로(보기만 끔) · 제목줄 · 리본 · 패널 · 상태줄 숨김(같은 출처 스타일 · CAD 앱 안 고침) · 전체 편집기 [도면 수정]과 같은 단축키
- 카드 [저장] · Ctrl+S = 전체 편집기와 같은 저장 길(saveTemplate · 읽은 문서에 도면 칸만)
- ItemSource write(M02 화면 자료 자리만 · 모달 복사본은 보기만)
- 저장 안 한 카드 고침 — 다른 항목 열 때 · 페이지 떠날 때 물음(ItemCards · Structure dirty · UI_Main 두 줄)
- 시험 test_m02_drawing_card(새) · structure_panel · item_picker_detail 모양 맞춤

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
2026-09-30 20:25:11 +09:00

52 lines
2.5 KiB
Python

"""도면 카드 미리보기 수정(PLAN 31-4) — 메뉴 없이 단축키로 고치기 · 카드 [저장] · 떠날 때 물음.
코드 글 모양으로 봄(CAD 는 iframe · 화면 검증은 ORCA).
- 고치기 = 층 고칠 권한 + 자료 자리의 저장 길(`write`) 둘 다 · 아니면 예전처럼 보기만.
- 고칠 때 CAD 메뉴(제목줄 · 리본 · 패널 · 상태줄)는 숨김 · CAD 앱은 안 고침(같은 출처 스타일).
- 저장 = 전체 편집기와 같은 길(`saveTemplate`) · 읽은 문서에 `도면` 만 갈아 끼움 · Ctrl+S 도 같음.
- 저장 안 한 카드 고침 = 다른 항목 열기 · 페이지 떠나기 때 물음.
"""
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
M02 = ROOT / "M02_MasterTemplete"
def _text(name: str) -> str:
return (M02 / name).read_text(encoding="utf-8")
def test_고치기는_권한과_저장_길_둘_다():
card = _text("M02_MasterTemplete_DrawingCard.ts")
assert "const edit = opt.editable && !!write;" in card
assert "readOnly: !edit," in card and "preview: !edit," in card
assert "onSave: (drawing) => doSave(drawing)" in card # CAD Ctrl+S · 💾 = 카드 저장
source = _text("M02_MasterTemplete_ItemSource.ts")
assert (
"write: (part, column, 판, 문서) => saveTemplate(layer, part, column, null, 판, 문서)"
in source
)
def test_메뉴는_숨기고_저장은_도면_칸만():
card = _text("M02_MasterTemplete_DrawingCard.ts")
for part in (".cad-titlebar", ".cad-ribbon", ".cad-inspector", ".cad-statusbar"):
assert part in card.split("const HIDE_EDIT")[1].split(";\n")[0]
assert "const next = { ...doc, 도면:" in card # 도번 · 열 · 판 은 읽은 그대로
assert 'write("structure", opt.column, version, next)' in card
for key in ("L · PL", "E · Delete", "Ctrl+Z · Ctrl+Y", "Ctrl+S"):
assert f'["{key}"' in card # ? 도움말 — 전체 편집기 명령 별칭과 같은 것
def test_저장_안_한_카드_고침은_물음():
cards = _text("M02_MasterTemplete_ItemCards.ts")
assert (
"if (preview?.dirty() && col?.id !== column && !(await showConfirmDialog(TEXT.discard)))"
in cards
)
assert "dirty: () => !!preview?.dirty()," in cards
assert "dirty: () => cards.dirty()," in _text("M02_MasterTemplete_Structure.ts")
main = _text("M02_MasterTemplete_UI_Main.ts")
assert main.count("!dirty && !panel?.dirty()") == 2 # 떠날 때 물음 · 창 닫기 막음