Files
Aislo/resources/tester/test_224_1c_subpanel_popout.py
T

106 lines
3.7 KiB
Python

# -*- coding: utf-8 -*-
"""224-1c(PLAN 325-3) 유토곡선 · 배수유역 [창 분할] — 종단 [창 분할]과 같은 양식 · 따로 새 창.
- 단추 = 두 판 머리줄 맨 앞(유토는 접어도 남는 머리줄 · 354-1) · 글 [창 분할]/[창 결합] · 툴팁에 판 이름.
- 창 이름 셋 다름(같으면 앞 창 body 를 덮어 조각이 사라짐).
- 뗌 = 새 창 body · 뗀 유토 판 손잡이 · 리사이저는 CSS 로 감춤 · 배수 지도 관찰 rehome.
- 붙임(단추 · 새 창 닫힘 · 페이지 떠남) = 제자리 — 종단 열 끝(종단 칸 아래) · 배수 content 끝.
- 종단 새 창 안에서 다시 떼면 그 창이 새 창을 엶(메인 창 팝업 차단 피함).
`helper_224_1c_subpanel_popout.cjs` 가 진짜 TS 를 가짜 DOM · 가짜 창 위에서 돌림.
"""
import json
import os
import re
import subprocess
from pathlib import Path
import pytest
HERE = os.path.dirname(os.path.abspath(__file__))
ROOT = Path(HERE).parents[1]
NAMES = ["aislo-profile-popout", "aislo-masshaul-popout", "aislo-drainage-popout"]
@pytest.fixture(scope="module")
def r():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_224_1c_subpanel_popout.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
return json.loads(proc.stdout)
def test_단추_글_툴팁_클래스(r):
cls = "ui-btn ui-btn--ghost b05-subpanel__popout"
assert r["mass"] == {
"text": "창 분할",
"title": "유토곡선 창 분할",
"className": cls,
"type": "button",
}
assert r["drainage"] == {
"text": "창 분할",
"title": "배수유역 창 분할",
"className": cls,
"type": "button",
}
assert "b05-route-profile__popout" in r["profile"]["className"]
assert r["massButtonInHead"] is True
def test_유토_뗌(r):
assert r["massOpened"] == {
"inPopupBody": True,
"isPopout": True,
"text": "창 결합",
"docTitle": "유토곡선 — Aislo",
}
def test_배수_뗌은_rehome(r):
assert r["drainOpened"] == {"inPopupBody": True, "rehomes": 1, "text": "창 결합"}
def test_새_창_닫힘과_단추로_제자리(r):
assert r["massClosed"] == {
"order": ["b05-route-profile__body-wrap", "b05-profile__masshaul-overlay"],
"isPopout": False,
"text": "창 분할",
}
assert r["drainClosed"] == {"popupClosed": True, "last": True, "rehomes": 2, "text": "창 분할"}
def test_창_이름_셋_다름과_여는_창(r):
names = [name for _, name in r["opened"]]
assert set(names) == set(NAMES) and len(set(NAMES)) == 3
# 종단 새 창 안의 단추는 종단 새 창이 엶
assert r["opened"][3] == ["aislo-profile-popout", "aislo-masshaul-popout"]
assert r["nested"]["profileInPopup"] is True
def test_페이지_떠나면_셋_다_닫고_제자리(r):
assert r["disposed"] == {
"closed": [True, True, True],
"profileInSlot": True,
"massInColumnEnd": True,
"drainInContent": True,
"original": 1,
}
def test_배선과_양식():
shared = (ROOT / "A00_Common/design/design_shared.ts").read_text(encoding="utf-8")
assert "attachSubPanelPopouts(profile);" in shared
css = (ROOT / "A00_Common/design/design_page.css").read_text(encoding="utf-8")
block = re.search(r"\n\.b05-subpanel__popout \{([^}]*)\}", css).group(1)
assert "var(--btn-bar-padding)" in block and "var(--btn-bar-font-size)" in block
assert ".b05-profile__masshaul-overlay.is-popout," in css
assert ".b05-profile__masshaul-overlay.is-popout .b05-profile__masshaul-handle," in css
assert ".b05-drainage.is-popout {" in css