Files
Aislo/resources/tester/test_180_3_b07_guide_toggle.py
T
eomsangdonandClaude Opus 5.5 659baa7751 feat(484 B07 설정): 좌측 ⚙ 설정 모달 · [현재 도면 확정] · [수정] 지움 · 저장 후 이동(481-3) · 탭 줄 겹판 자리
- 공용 createPanelCard 곁값 onSettings — 캐럿 왼쪽 ⚙ · 누름이 접힘 안 일으킴(B08 · B09 그대로)
- 평면도 ⚙ = 평면도 관리 모달([평면도 관리] 단추 지움) · 횡단도 ⚙ = 배치 칸 · 표 배율 · 안내선(카드 밑 칸 지움) · 구조물 ⚙ = 「M02 그림 — 축척 없음」 · 종단 1장 · 토적 = 단추 안 ⚙ · 표지 없음
- ⚙ 머리 [원본에서 다시 그리기] — 그 묶음 도면을 연 때만 · 저장본이면 invalidate
- 잠금 없음(요구 281) — 읽기 전용 안 묶음 · 자동 B08 이동 · 「모든 횡단 확정」 잠금 지움
- onStepClick 한 길 = 고친 탭(●) + 지금 탭 저장 → B08 · B09 면 단계 4 완료(새 POST design-drawings-complete) → 이동 · 실패 = 머묾
- 저장 · 원본 묶음 = 새 B07_DesignDetail_UI_Save.ts · 모달 = 새 B07_DesignDetail_UI_Settings.ts(UI_Page 633 → 543줄)
- 탭 줄 = .cad-host 의 --cad-tab-slot-left/right(px · CSS left · right 꼴) 있으면 리본 빈 자리에 겹침 · 없으면 지금 자리
- 시험: 새 test_280_5_b07_settings · 130 · 153-1 · 180-3 · 212-3 · 269 · 311 고쳐 씀

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 22:13:04 +09:00

80 lines
3.5 KiB
Python

"""180-3 B07 횡단 장 안내선 보이기 / 숨기기 단추.
- 끄는 것 = 점선 작도 영역 + 붉은 넘침 틀(화면 전용) · 인쇄 칸선 · 도면 개체는 그대로
- 단추 = 배치 칸 줄 · ghost sm · 글 「안내선 숨기기」 ↔ 「안내선 보이기」 · 상태는 모듈 값(저장 안 함)
- 숨김이면 넘침 토스트도 안 띄움 · 메시지 한 줄(`aislo:b08:guide-visible`) · cad_host `setGuideVisible`
"""
import json
import os
import re
import subprocess
from pathlib import Path
HERE = os.path.dirname(os.path.abspath(__file__))
ROOT = Path(HERE).parents[1]
B07 = ROOT / "B07_DesignDetail"
def _read(path: Path) -> str:
return path.read_text(encoding="utf-8")
def test_단추_글_누름_상태_이어짐():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_180_3_b07_guide_toggle.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
out = json.loads(proc.stdout)
assert out["first"] == {
"text": "안내선 숨기기",
"cls": "ui-btn ui-btn--ghost ui-btn--sm",
"pressed": "false",
"shown": True,
}
assert out["hidden"]["text"] == "안내선 보이기" and out["hidden"]["pressed"] == "true"
assert out["hidden"]["shown"] is False
assert out["again"]["text"] == "안내선 숨기기" and out["again"]["shown"] is True
assert out["last"]["shown"] is False
assert out["sent"] == [False, True, False] # CAD 에 알린 값
# 화면을 다시 세워 새 단추를 만들어도 숨김 유지
assert out["rebuilt"] == {"text": "안내선 보이기", "pressed": "true"}
def test_메시지_짝_호스트_CAD():
host = _read(ROOT / "ui_template" / "cad_host" / "cad_host.ts")
bridge = _read(B07 / "openwebcad" / "src" / "integration" / "aislo-drawing-bridge.ts")
guide = _read(B07 / "openwebcad" / "src" / "integration" / "guide-area.ts")
name = "aislo:b08:guide-visible"
assert f'"{name}"' in host and f"'{name}'" in bridge # 짝 메시지 이름 같음
assert "setGuideVisible: (visible) => postAfterLoad(" in host
assert "setGuideVisible: (visible: boolean) => void;" in host
assert "return setGuideVisible(guideMessage.visible);" in bridge
assert "if (!guide || !guideVisible) return;" in guide # 그리기 거름
assert "!guideVisible) return;" in guide # 끌기 집기도 거름
# 싣기(setGuide)가 보임 값을 건드리지 않음
body = guide[
guide.index("export function setGuide(") : guide.index("export function setGuideArea")
]
assert "guideVisible" not in body
def test_페이지_잇기_토스트_거름_장만():
page = _read(B07 / "B07_DesignDetail_UI_Page.ts")
assert "if (guideShown() && guide?.marks?.length) {" in page # 숨김 = 넘침 토스트 없음
assert "cad.setGuideVisible(visible)" in page
assert "if (!guideShown()) cad.setGuideVisible(false);" in page # 다시 세운 화면에 이어 줌
# 배치 칸 줄 끝 = ⚙ 횡단 모달(280-5)
assert "controls.append(deps.cross.guideToggle);" in _read(
B07 / "B07_DesignDetail_UI_Settings.ts"
)
assert "guideToggle.disabled = !isCrossSheet(drawing);" in page # 장만
# 단추는 인쇄 칸선(도각 층) · 도면 개체를 건드리지 않음 — 파이썬 쪽 변경 없음
assert not re.search(
r"guide.?visible", _read(B07 / "B07_DesignDetail_Engine_Cad_Sheet.py"), re.I
)