Files
Aislo/resources/tester/test_345_2_3d_modal.py
T
eomsangdonandClaude Opus 5.5 f8fcb812d3 feat(종단보기): 345-2 3D → 큰 모달 — [3D] 단추 · 처음 열 때 지형 · 닫으면 숨긴 자리로 · 그리기 멈춤 · 떠날 때만 버림 · 3D 노선 점 옮김 · 지움 + 「선택 포인트 상세」 칸 지움
- 새 design_view_profile_3d_modal.ts(공용 openModal wide · 보기 조작 줄 · [3D 업데이트] · 3D 고름이 같은 노드로 따라감)
- 지형 올리기는 페이지 열기에서 빠짐 · 모달 처음 열 때(로딩 원) · 등고선 간격 바꿈도 그 값으로
- 시험: test_345_2_3d_modal 4 통과(닫힌 동안 그리기 0) · 칸 시험(parity · 311) 고쳐 씀 · typecheck 통과

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VmC34fsxxbweEG3RUjs3Mn
2026-10-16 11:11:10 +09:00

70 lines
2.4 KiB
Python

"""345-2 3D → 큰 모달 — 닫힌 동안 그리기 0 · 처음 열 때 지형 · 닫으면 숨긴 자리 · 버림은 떠날 때만.
Node 헬퍼 `helper_345_2_3d_modal.cjs` 가 모달 조각을 트랜스파일해 가짜 뷰어로 돌림 · 배선은 글로 봄.
"""
from __future__ import annotations
import json
import subprocess
from pathlib import Path
import pytest
HERE = Path(__file__).resolve().parent
ROOT = HERE.parents[1]
def _read(rel: str) -> str:
return (ROOT / rel).read_text(encoding="utf-8")
@pytest.fixture(scope="module")
def out() -> dict:
run = subprocess.run(
["node", str(HERE / "helper_345_2_3d_modal.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
check=True,
)
return json.loads(run.stdout)
def test_닫힌_동안_그리기_0(out):
assert out["closedDraws"] == 0
assert out["inPark"] is True
assert out["afterCloseDraws"] == out["openDraws"] == 3
assert out["backInPark"] is True
assert out["disposedOnClose"] is False # 닫기는 멈춤만 · 문맥 살림
def test_처음_열_때_지형_한_번_로딩_원(out):
assert out["terrainBeforeOpen"] == 0
assert out["wide"] is True and out["inModal"] is True
assert out["spinnerWhileLoading"] is True and out["spinnerGone"] is True
assert out["terrainLoads"] == 1 # 다시 열어도 다시 안 올림
assert out["modalCount"] == 2 # 열린 동안 또 눌러도 하나
assert out["reopenDraws"] == 5
def test_떠날_때만_버림(out):
assert out["beforeCloseOk"] is True
assert out["closedOnDispose"] is True
assert out["disposed"] is True
assert out["runningAfterDispose"] is False
def test_배선_3D_상주_없음_죽은_길_지움():
view = _read("A00_Common/design/design_view_profile.ts")
assert "mainContent.append(viewer.root)" not in view
assert "view3d.modal.park" in view and "view3d.modal.button" in view
assert "dispose: view3d.modal.dispose" in view
assert "loadTerrain" not in view # 지형은 모달을 열 때
for gone in ("beginMoveSelected", "deleteSelected", "updateSelected", "panel.setSelected"):
assert gone not in view
assert "selected-point" not in _read("B05_Profile/B05_Profile_UI_Panel_Sections.ts")
assert "selectedNodes" not in _read("B05_Profile/B05_Profile_UI_Panel_Route.ts")
assert "beginMoveSelected" not in _read("B05_Profile/B05_Profile_UI_Viewer.ts")
assert len(view.splitlines()) <= 700