Files
Aislo/resources/tester/test_634_1_pick_menu_row.py
T
eomsangdonandClaude Opus 5.5 cd0f68946b fix(부품): 묶음 단추 켠 수 원형 숫자 걷음(요구 551)
- createPickMenu 여럿 = 아이콘 + ▾ · 켠 표시는 단추 눌림(하나라도 켜면) 그대로
- 배지 count accent 덧 · 메뉴 css 배지 줄 걷음 · 견본 · 겹 줄 머리 글 맞춤
- 시험 634_1 고침 — 배지 대신 「배지 없음 · 눌림 = 켠 줄 있음」을 잡음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 11:49:26 +09:00

67 lines
3.1 KiB
Python

"""634-1 부품(요구 546) — 여럿 고르기 메뉴(안 닫힘 · 켜면 눌림 · 켠 수 숫자 없음(요구 551) · 줄 아이콘 · 막힘) · 한 행 두 영역 · 견본 · 아이콘."""
import re
from pathlib import Path
UI = Path(__file__).resolve().parents[2] / "ui_template"
MENU = (UI / "ui_template_context_menu.ts").read_text(encoding="utf-8")
MENU_CSS = (UI / "ui_template_context_menu.css").read_text(encoding="utf-8")
TOOLS = (UI / "ui_template_map_tools.ts").read_text(encoding="utf-8")
TOOLS_CSS = (UI / "ui_template_map_tools.css").read_text(encoding="utf-8")
ICONS = (UI / "ui_template_icons.ts").read_text(encoding="utf-8")
def test_여럿_고르기_안_닫힘_눌림():
pick = MENU[MENU.index("export function createPickMenu(") :]
assert '"menuitemcheckbox"' in pick and "values," in pick and "setItem(value, patch)" in pick
click = pick[pick.index('b.addEventListener("click"') :]
click = click[: click.index("pop.append(b);")]
# 여럿 = 켬끔 뒤 바로 돌아감(setOpen(false) 앞)
assert click.index("if (multi)") < click.index("setOpen(false)")
# 요구 551 — 켠 수 원형 숫자 걷음 · 켠 표시 = 단추 눌림
assert "createBadge" not in MENU and "ui-badge" not in MENU_CSS
assert 'root.setAttribute("aria-pressed", String(values().length > 0));' in pick
assert 'window.addEventListener("resize", onShift);' in pick # 창 크기 = 닫힘
assert 'document.addEventListener("scroll", onShift, true);' in pick # 밀기 = 닫힘
assert ".ui-pick-menu--multi" in MENU_CSS and ".ui-row-menu__item:disabled" in MENU_CSS
def test_한_행_두_영역():
assert "export function createMapToolRow(left: HTMLElement, right: HTMLElement)" in TOOLS
assert ":scope > .ui-map-tools__hint" in TOOLS # [?] 판은 행 아래
first = TOOLS_CSS[TOOLS_CSS.index(".ui-map-row__line > .ui-map-tools:first-child {") :]
first = first[: first.index("}")]
assert "flex-shrink: 0;" in first and "max-width: 50%;" in first # 모자라면 그룹2 먼저
area = TOOLS_CSS[TOOLS_CSS.index(".ui-map-row__line > .ui-map-tools {") :]
assert "min-width: 0;" in area[: area.index("}")]
def test_마우스_글_막힘만_까닭():
tip = TOOLS[TOOLS.index("export function mapToolTip(") :]
assert "why ? `${el.dataset.tip} — ${why}` : el.dataset.tip" in tip[: tip.index("\n}")]
assert 'title: "도움말"' in TOOLS
def test_아이콘_겹침_없음():
table = TOOLS[TOOLS.index("export const MAP_TOOLS") : TOOLS.index("satisfies")]
icons = re.findall(r'icon: "(\w+)"', table)
assert len(icons) == len(set(icons))
for name in (
"contours",
"cutFill",
"lineament",
"spacing",
"streams",
"signpost",
"parcelHouse",
"ban",
):
assert re.search(rf"^ {name}:", ICONS, re.M), name
def test_견본():
parts = (UI / "ui_template_ui_kit_parts.ts").read_text(encoding="utf-8")
frames = (UI / "ui_template_ui_kit_frames.ts").read_text(encoding="utf-8")
assert 'name: "고르기 메뉴(하나 · 여럿)"' in parts and "demo: pickDemo" in parts
assert "createMapToolRow(layers.root, tools.root)" in frames