Files
Aislo/resources/tester/test_m02_drawing_card.py
T
eomsangdonandClaude Opus 5.5 bcb1c725c4 refactor(M02): 항목 카드 넷 공용 틀 CardShell (PLAN 31-7)
- 공용 틀 — 제목 줄(제목 · 저장 안 한 점 ● · 오른쪽 단추 자리) + 한 줄 부제(번호 · 이름 · 말줄임) · 상태(불러오는 중 · 실패 + 다시 불러오기 · 비었음) · [저장](늘 보임 · 고쳐야 켜짐 · 카드 안 Ctrl+S · 알림 글 한 벌) · ?(단축키 상자)
- 도면 정보 · 면적산출 · 재료산출(ItemCards) · 선택 입력(관리 화면 · 고르기 모달 값 카드)이 틀에 내용만 넣음
- 「〇〇 수정」 빈 단추 한 모양 · 엑셀 카드에도 ? · 불러오는 중 네 카드 · 실패는 카드 안 글(토스트 안 씀) · 물음 한 번(어느 카드든)
- 저장 길(saveTemplate · 도면 write · sheetEdit.save · 위 [저장] saveInputs) · 단축키는 그대로 · 고르기 모달은 보기만
- 시험 test_m02_card_shell 새로 · 옛 모양 시험 맞춤

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:24:49 +09:00

56 lines
2.8 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 = drawingEditable(opt.editable, opt.source);" in card
assert "editable && !!source.write;" in card
assert "readOnly: !edit," in card and "preview: !edit," in card
assert (
"onSave: (drawing: DrawingTemplateDoc) => void opt.saver.run(() => 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")
# 물음 한 번(31-7) — 어느 카드든(도면 · 엑셀) 고침이 있으면 · 틀의 저장 표시(saver)로 봄
assert "if (!again && anyDirty() && col?.id !== column && !(await showConfirmDialog(" in cards
assert "const anyDirty = (): boolean => cards.some((c) => c.saver.dirty());" in cards
assert "dirty: anyDirty," in cards
assert "dirty: () => cards.dirty()," in _text("M02_MasterTemplete_Structure.ts")
main = _text("M02_MasterTemplete_UI_Main.ts")
assert "const busy = (): boolean => dirty || !!panel?.dirty();" in main
assert main.count("!busy()") >= 2 # 떠날 때 물음 · 창 닫기 막음