- 1 가림막 저장(확정)도 도중 고침 검사 · 「저장 중 고친 값」 알림(키는 안 막음 · B07~B09 안 번짐) - 2b snapOptions 간격 = 10 만 · 옛 초안 0.1 · 1 m = null(load_station_snap_step 거울) - 3 추가 측점 = 측점 묶음 data-plus · B05 누름 · 가까이 표시가 그 속성으로 - 4d 숨은 동안 고른 카드 = 다음 다시 그림 끝에 밂 · 휠 · 누름이면 버림 - 7 pipe_calc set 다섯 = 풀개 · 횡단 · 종단 보기 onDispose - 8 저장 중 [초기화] = [저장]과 같은 알림 + 막음 · /route/reset = 프로젝트 잠금 안 - 9 isUserPick 거름 = 묶음 띄운 그 누름만 · 계산 중 새 누름 = 폄 - 시험 test_505_2_save_pick 새 · 398_1 busyPick 1 · 390_5 글 맞춤 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
101 lines
4.1 KiB
Python
101 lines
4.1 KiB
Python
"""PLAN 398-1 sub7 — 교점 옮기면 좌측 패널 열림(요구 248).
|
|
|
|
못박는 것
|
|
- 좌측 패널 저절로 펴기는 사용자 고름만 — 진짜 누름(click · pointerup · contextmenu) 안 = 1.
|
|
- 다시 칠하기 · 누가거리 따라가기 · 되돌리기 · 묶음 다시 돎 = 0 — 누름 밖(배수유역 다시 나눔 응답) ·
|
|
방향키 · 끌기 도중 · 가짜 누름 · 묶음 차례를 띄운 그 누름(교점 놓음 · 곡선 지우기 · 되돌리기) ·
|
|
「계산 중」 동안 새 누름 = 1(505-2).
|
|
- 뿌리 한 곳 — 폼(`selectPipeByChainage` · `selectById` · `addAt`)은 그대로 펴기를 부르고 `design_shared`
|
|
onReveal 하나가 `isUserPick` 으로 거름.
|
|
- 499-1 뒤집음 — 펴기 = 「구조물 배치」 카드만 · 좌측 패널은 안 엶(`revealLeft` · `setOptionsOpen(` 없음) ·
|
|
패널을 열 때 고른 줄 · 강조 상자로 한 번 밂 · B06 평면 겹침 기준 = main 전체.
|
|
|
|
짝: `helper_398_1_user_pick.cjs`(진짜 `design_user_pick` · `design_page_data`).
|
|
"""
|
|
|
|
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 r() -> dict:
|
|
proc = subprocess.run( # noqa: S603 — 고정 실행 파일
|
|
["node", str(HERE / "helper_398_1_user_pick.cjs")],
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
timeout=60,
|
|
)
|
|
assert proc.returncode == 0, proc.stderr
|
|
return json.loads(proc.stdout)
|
|
|
|
|
|
@pytest.mark.parametrize("way", ["click", "pointerup", "contextmenu", "afterRun", "busyPick"])
|
|
def test_사용자_고름은_폄(r, way):
|
|
assert r[way] == 1 # busyPick = 「계산 중」 동안 새 누름(505-2)
|
|
|
|
|
|
@pytest.mark.parametrize("way", ["outside", "arrow", "drag", "synthetic", "pipelineRepaint"])
|
|
def test_다시_칠하기는_안_폄(r, way):
|
|
assert r[way] == 0
|
|
|
|
|
|
def test_뿌리_한_곳():
|
|
shared = _read("A00_Common/design/design_shared.ts")
|
|
assert (
|
|
'isUserPick(shared.projectId) && shared.structures?.root.classList.remove("is-collapsed")'
|
|
in shared
|
|
)
|
|
for rel in ("A00_Common/design/design_shared.ts", "A00_Common/design/design_page.ts"):
|
|
assert "revealLeft" not in _read(rel) and "setOptionsOpen(" not in _read(rel) # 499-1
|
|
panel = _read("B05_Profile/B05_Profile_UI_Structures_Panel.ts")
|
|
assert panel.count("callbacks.onReveal?.()") == 3 # 고름 둘 · 우클릭 추가 — 부르는 쪽은 안 막음
|
|
found = subprocess.run( # noqa: S603, S607 — 고정 실행 파일
|
|
["git", "grep", "-l", "isUserPick(", "--", "*.ts"],
|
|
cwd=ROOT,
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
)
|
|
users = set(found.stdout.split()) | {
|
|
"A00_Common/design/design_user_pick.ts",
|
|
"A00_Common/design/design_shared.ts",
|
|
} # 새 파일(추적 전)
|
|
assert sorted(users) == [
|
|
"A00_Common/design/design_shared.ts",
|
|
"A00_Common/design/design_user_pick.ts",
|
|
]
|
|
|
|
|
|
def test_열_때_고른_줄로_밂():
|
|
page = _read("A00_Common/design/design_page.ts")
|
|
assert "onOptionsOpenChange: (isOpen) => isOpen && scrollToPick(shared.structures)" in page
|
|
shared = _read("A00_Common/design/design_shared.ts")
|
|
body = shared[shared.index("export function scrollToPick(") :]
|
|
body = body[: body.index("\n}\n")]
|
|
assert 'listRoot.querySelector(".is-selected")' in body
|
|
assert 'root.querySelector("fieldset.is-active")' in body
|
|
layout = _read("ui_template/ui_template_workflow_layout.ts")
|
|
assert "options.onOptionsOpenChange?.(isOpen);" in layout
|
|
|
|
|
|
def test_B06_평면_겹침_기준_main_전체():
|
|
css = _read("A00_Common/design/design_page.css")
|
|
rule = css[css.index('.design-page__main[data-view="cross"] > .design-page__center {') :]
|
|
assert "position: static;" in rule[: rule.index("}")]
|
|
peek = css[css.index(".design-plan-peek {") :]
|
|
z = int(peek[peek.index("z-index:") + 8 : peek.index(";", peek.index("z-index:"))])
|
|
assert 3 < z < 199 # 종단 판(3) 위 · 서랍 덮개(199) 아래
|