"""258-1 · 258-2 · 258-3 — 표 폭 CSS 변수 · 입력 칸 테두리 옅게 · 구조물 조합 미지정 회색(소스 시험).
- 템플릿 표 인라인 = `--dt-w`(열 합) · css `width: var(--dt-w)` → 페이지 css 가 width 로 덮음
- 거리이정표 표 = 틀 폭 100%
- 고칠 칸 td.is-can-edit = accent 28% outline · box-shadow 아님
- B05 미지정 = 회색(text-muted)
"""
import re
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
DT_CSS = ROOT / "ui_template" / "ui_template_data_table.css"
DT_TS = ROOT / "ui_template" / "ui_template_data_table.ts"
def _rule(css: str, selector: str) -> str:
m = re.search(re.escape(selector) + r" \{([^}]*)\}", css)
assert m, selector
return m.group(1)
def test_표_폭_인라인_변수_css_width_변수():
ts = DT_TS.read_text("utf-8")
assert '
' in ts
assert 'style="width:${x}px"' not in ts # 인라인 width 가 페이지 css 를 이기지 않음
body = _rule(DT_CSS.read_text("utf-8"), ".ui-data-table__table")
assert "width: var(--dt-w);" in body
assert "table-layout: fixed;" in body
def test_거리이정표_표_틀_폭_전체():
css = (ROOT / "B08_Quantity" / "B08_Quantity_UI_Milestone.css").read_text("utf-8")
body = _rule(css, ".b08-milestone > .ui-data-table .ui-data-table__table")
assert "width: 100%;" in body # 변수 규칙(0,1,0)보다 선택자가 구체적
def test_입력_칸_테두리_옅게_outline():
css = DT_CSS.read_text("utf-8")
body = _rule(css, ".ui-data-table__table td.is-can-edit")
m = re.search(r"var\(--color-accent\) (\d+)%", body)
assert m and 25 <= int(m.group(1)) <= 30 # 예전 60% → 옅게
assert "outline: 1px solid" in body and "box-shadow" not in body
assert '"is-can-edit"' in DT_TS.read_text("utf-8")
def test_구조물_조합_미지정_회색():
css = (ROOT / "B05_Profile" / "B05_Profile_UI_Style_Structures.css").read_text("utf-8")
body = _rule(css, ".b05-structure__summary-name:not(.is-assigned)")
assert "border-color: var(--color-text-muted);" in body
assert "--color-text-muted" in body.split("background:")[1]
assert "--color-warning" not in body