"""737 단가산출 상세 — 옵션 칸 격자 · 합계 한 줄 바닥 · 비목 상자 지킴 시험(글 대조 · 서버 · 화면 없음) · 799-2 텍스트 수식 보기는 걷음.""" import re from pathlib import Path ROOT = Path(__file__).resolve().parents[2] M01 = ROOT / "M01_MasterData" SHEET_CSS = (ROOT / "A00_Common" / "calc_sheet.css").read_text(encoding="utf-8") STYLE = (M01 / "M01_MasterData_UI_LogicLab_Style.css").read_text(encoding="utf-8") HO = (M01 / "M01_MasterData_UI_LogicLab_Ho.ts").read_text(encoding="utf-8") def test_옵션_격자_폭_따라_6_4_3_2_1(): cols = re.findall( r"@container \(min-width: (\d+)px\) \{\s*\.calc-sheet__opts-grid \{\s*grid-template-columns: repeat\((\d), ", SHEET_CSS, ) assert cols == [("300", "2"), ("450", "3"), ("600", "4"), ("900", "6")] assert "container-type: inline-size" in SHEET_CSS # 창 폭이 아니라 상자 폭 기준 def test_합계_한_줄_바닥_고정(): foot = STYLE[STYLE.index(".m01lab__foot {") :] foot = foot[: foot.index("}")] assert "position: sticky" in foot and "bottom: 0" in foot assert "repeat(4, minmax(0, 1fr))" in foot assert "overflow: clip" in STYLE # 메인 칸이 굴림 칸이면 바닥에 안 붙음 foot_ts = (M01 / "M01_MasterData_UI_LogicLab_Foot.ts").read_text(encoding="utf-8") assert 'className: "m01lab__foot"' in foot_ts # 748-3 두 보기가 같은 바닥 줄 부품 assert "buildFoot(sums, calculated, total)" in HO assert 'data-cols="3"' in STYLE and ".m01lab__ho-box + .m01lab__ho-box" in STYLE def test_공통_옵션은_모든_박스에_같이(): assert "optionRows([...usesOf(b), ...common], ctx)" in HO assert "commonCard(" in HO and "boxes.length ||" in HO # 박스 없을 때만 따로 카드