Files
Aislo/resources/tester/test_398_1_reveal_user_pick.py
T
eomsangdonandClaude Opus 5.5 99a224c6c9 fix(505-2 B05 · B06 저장 · 고름): 확정 중 고침 알림 · 저장 중 초기화 막음 + 서버 잠금 · 계산 중 누름 폄 · B06 목록 밂 · 추가 측점 data-plus · 옛 초안 간격 · 풀개 — 요구 309-3 · 310
- 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>
2026-10-21 13:44:25 +09:00

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) 아래