Files
Aislo/resources/tester/test_311_panel_folded.py
T

132 lines
5.3 KiB
Python

# -*- coding: utf-8 -*-
"""311 좌측 패널 기본 접힘 · B07 첫 쪽 = 표지 (요구 204).
못박는 것
- 기본 접힘(389-3) = 좌측 카드 전부 — B09 「데이터 점검」 · 「공기 옵션」 · 인쇄 둘 / B07 묶음 여섯 /
B06 「횡단 보기 설정」 / B05 「페이지 설정」 · 「노선 추천」 · 「구조물 배치」 / B08 · M02 집계 양식.
- 쪽 안에서 편 것은 다시 그려도 그대로 — B05 · B06 = 한 벌 패널이 칸을 한 번만 세움 · B07 = 다시 세울 때
옛 목록 접힘을 이어 받음 · B09 = 좌측 패널을 쪽 그릴 때 한 번만 세움.
- B07 처음 들어가면 표지 — 고른 장 기억(모듈 값 `reopenDrawingId` · `reopenCrossSheet`)이 있으면 그 장.
Node 헬퍼 `helper_311_panel_folded.cjs` 가 가짜 DOM 위에서 B05 · B06 · B07 패널을 돌림.
"""
import json
import os
import subprocess
from pathlib import Path
import pytest
HERE = os.path.dirname(os.path.abspath(__file__))
ROOT = Path(HERE).parents[1]
def _read(rel: str) -> str:
return (ROOT / rel).read_text(encoding="utf-8")
@pytest.fixture(scope="module")
def out():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_311_panel_folded.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
return json.loads(proc.stdout)
def test_B05_B06_첫_그림_접힘(out):
assert out["profileFirst"] == {
"페이지 설정": True,
"노선 추천": True, # 389-3 모든 좌측 카드 기본 닫힘
}
assert out["crossFirst"]["B06_View_Title"] is True
assert out["crossFirst"]["B06_Std_Title"] is True # 옛 기본 접힘 그대로
def test_B05_B06_편_뒤_다시_그림_유지(out):
assert (
out["crossFirst"]["페이지 설정"] is False
) # 편 것 → 보기 바꿔도 그대로(345-3 계획노선 칸 지움)
assert out["afterRedraw"]["페이지 설정"] is False
assert out["afterRedraw"]["B06_View_Title"] is False
assert out["sameRouteNode"] is True
def test_B07_첫_그림_접힘(out):
assert out["b07EntryFolded"] == [] # 들어올 때 = 라우터가 비운 그릇 → 기본값
assert out["b07First"] == {
"plan": True,
"longitudinal": True,
"cross": True,
"mass_haul": True,
"structure": True, # 389-3 토적도 · 구조물 도면 · 전개도 도 기본 닫힘
"development": True,
}
def test_B07_다시_세워도_접힘_이어_받음(out):
assert out["b07Redraw"] == {
"plan": True,
"longitudinal": True,
"cross": False,
"mass_haul": True,
"structure": True,
"development": True,
}
def test_376_2_구조물_도면_카드(out):
assert out["b07StructureEmpty"] == "B05 · B06 구조물 배치에 연결된 구조물 도면이 없습니다."
assert out["b07StructureButtons"] == [["structure_k", "관보호공 조합"]]
def test_B07_다시_세우기는_옛_목록을_기다리기_전에_읽음():
page = _read("B07_DesignDetail/B07_DesignDetail_UI_Page.ts")
body = page[page.index("export async function renderB07DesignDetail(") :]
assert body.index("const folded = foldedGroups(root);") < body.index("await ")
assert "crossLayoutSlot,\n folded,\n );" in body.replace("\r\n", "\n")
def test_B07_첫_장은_표지_기억_있으면_그_장():
page = _read("B07_DesignDetail/B07_DesignDetail_UI_Page.ts")
assert 'const cover = drawings.findIndex((item) => item.kind === "cover");' in page
assert "const first = reopen >= 0 ? reopen : Math.max(cover, 0);" in page
def test_B09_기본_접힘_좌측은_한_번만_세움():
shell = _read("B09_Estimation/B09_Estimation_UI_Shell.ts")
assert 'createPanelCard("데이터 점검", true)' in shell
assert 'createPanelCard("공기 옵션", true)' in _read(
"B09_Estimation/draft/B09_Draft_Schedule_Panel.ts"
)
# 다시 그림(show) 은 가운데 판만 바꿈 — 좌측 카드는 쪽 그릴 때 한 번
show = shell[shell.index("const show = (tab: TabId") : shell.index("const run = async (")]
assert "createPanelCard" not in show and "left." not in show
print_page = _read("B09_Estimation/draft/B09_Draft_Print_Page.ts")
assert 'createPanelCard("영역")' in print_page and 'createPanelCard("쪽 목록")' in print_page
def test_389_3_공용_카드_기본값_닫힘_그_밖_자리():
assert "createPanelCard(title: string, collapsed = true)" in _read(
"ui_template/ui_template_collapsible.ts"
)
assert "collapsed = true,\n): { root: HTMLElement; body: HTMLElement }" in _read(
"A00_Common/design/design_panel.ts"
).replace("\r\n", "\n")
form = _read("B05_Profile/B05_Profile_UI_Structures_Form.ts")
assert "ui-collapsible ui-sidebar-section is-collapsed" in form
# 우클릭 추가 = 구조물 배치 카드를 폄(116-1) 그대로
assert 'root.classList.remove("is-collapsed");' in _read(
"B05_Profile/B05_Profile_UI_Structures_Panel.ts"
)
# M02 구조물 집계 양식도 처음엔 닫힘 — 열림 해제 줄 없음
assert 'summary.classList.remove("is-collapsed")' not in _read(
"M02_MasterTemplete/M02_MasterTemplete_UI_Side.ts"
)
assert "FOLDED_KINDS" not in _read("B07_DesignDetail/B07_DesignDetail_UI_Panels.ts")