Files
Aislo/resources/tester/test_352_3_analysis_terrain_default.py
T
eomsangdonandClaude Opus 5.5 4eec3a4b37 feat(509-5 · 509-2 B05 추천 지형): 분석 지형 고르기 = 추천 노선 창 안 · 지형마다 추천 미리 셈 · [적용] = 창 지형이 설계 지형 · 평면은 지형 이름만 · 설계 지형 격자 하나(수치지형도 적용이면 그 격자)
- 전처리 미리 셈이 고를 수 있는 지형마다(설계 지형 먼저 · 수치지형도는 DB 모델 있을 때만) 다섯 갈래 + 초기 종단
- 창 지형 바꿈 = 그 지형 저장본만 · 없으면 409 안내(+[재계산]) · 기본값 판정에서 지형 뺌
- POST /route/initial terrain = 창 지형 · [적용] draft.terrain = 창 지형 · 손 [저장]은 지형 안 바꿈(서버도 as_initial 일 때만)
- 평면 분석 지형 고르기 · 화면 취향(routeedit-terrain) 걷음 · 지반고 · 묶음 초안 = 설계 지형(null) · 적용 뒤 받아 둔 격자 버림
- 시험 test_509_5 · test_509_2 · 걷은 고르기를 보던 옛 시험 새 동작으로(352_3 건너뜀)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:41:20 +09:00

61 lines
2.4 KiB
Python

"""352-3 분석 지형 기본값 — 고른 적 없으면 데이터대로 · 열 때 안 씀 · 사용자가 바꿀 때만 기억 · 바꾸면 묶음에 알림.
./venv/Scripts/python.exe -m pytest resources/tester/test_352_3_analysis_terrain_default.py -q
"""
from __future__ import annotations
import json
import subprocess
from pathlib import Path
import pytest
# 509-5 — 평면 분석 지형 고르기(화면 취향 기억)를 걷음 · 지형 고르기 = 추천 창 안(test_509_5_*)
pytestmark = pytest.mark.skip(
reason="509-5 평면 분석 지형 고르기 걷음 — test_509_5_recommend_terrain"
)
HERE = Path(__file__).resolve().parent
ROOT = HERE.parents[1]
@pytest.fixture(scope="module")
def out() -> dict:
run = subprocess.run( # noqa: S603 — 고정 실행 파일
["node", str(HERE / "helper_352_3_terrain.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
)
assert run.returncode == 0, run.stderr
return json.loads(run.stdout)
def test_고른_적_없으면_데이터대로_열_때_안_씀(out) -> None:
assert out["unknown"] == "las"
assert out["bothNoPick"] == "las" # 라이다가 있는 프로젝트 = 라이다
assert out["writesAfterOpen"] == 0 # 열 때 pref 에 쓰지 않음
assert out["sheetDesignNoPick"] == "sheet" # 설계 지형대로 — 고르기 글 = 실제 쓰는 지형
def test_사용자가_바꿀_때만_기억(out) -> None:
assert out["afterPick"] == "sheet" and out["writesAfterPick"] == 1
assert out["nextAccess"] == "sheet" # 다음 접근에도
def test_하나뿐이면_있는_것만(out) -> None:
assert out["sheetOnlyStale"] == "sheet"
assert out["lasOnlyStale"] == "las"
def test_편집기_배선() -> None:
main = (ROOT / "B05_Profile/B05_Profile_UI_RouteEdit.ts").read_text(encoding="utf-8")
assert main.count("setAnalysisTerrain(") == 1 # 바꿀 때 한 곳뿐 — 열 때 쓰기 없음
handler = main.split('terrainSelect.addEventListener("change"', 1)[1][:900]
assert "setAnalysisTerrain(projectId" in handler
assert "tellDraft()" in handler # 바꾸면 계산 묶음에 알림(430 — 스냅과 한 곳)
assert "options.draft?.edited(" in main.split("function tellDraft()", 1)[1][:400]
# 설계 지형이 수치지형도면 확정 모델(수치지형도 서피스) 등고선을 「LAS」로 쓰지 않음
assert 'analysisTerrain(projectId) === "las" && designTerrain === "las"' in main