# -*- coding: utf-8 -*- """224-1b(PLAN 325-2) 유토곡선 판 「붙어 있음」 판정 · 방향키. - 높이 나눔 · 끌기는 「열림 && 종단 뿌리 안」만 자리를 줌 — 새 창으로 뗀 유토 판은 메인 자리 0 · 임시 축소 인라인 높이도 안 씀(뗀 창 높이가 굳지 않게). - 뗀 유토 판(`is-popout`)은 메인 보이는 구간 세로 범위(viewRange)를 안 씀 — 노선 전체 세로. - 방향키 ←→ 판정은 마지막 누름이 종단 뿌리 · 뗀 유토 · 뗀 배수 판 안이면 종단도 몫. `helper_224_1b_masshaul_docked.cjs` 가 진짜 TS 를 가짜 DOM 위에서 돌림. """ import json import os import subprocess from pathlib import Path import pytest HERE = os.path.dirname(os.path.abspath(__file__)) B05 = Path(HERE).parents[1] / "B05_Profile" @pytest.fixture(scope="module") def r(): proc = subprocess.run( ["node", os.path.join(HERE, "helper_224_1b_masshaul_docked.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): """본문 400 − 알약 40 = 360 · 유토 300 은 예산 247 넘어 247 로 줄고 그래프 100.""" assert r["docked"] == {"chartHeight": 100, "inline": "247px"} def test_뗀_유토는_자리_0_인라인_없음(r): assert r["popped"] == {"chartHeight": 347, "inline": ""} def test_방향키_판정(r): assert r["arrows"] == { "profile": True, "mass": True, "drainage": True, "card": False, "none": False, } def test_끌기도_같은_판정(): drag = (B05 / "B05_Profile_UI_Profile_Drag.ts").read_text(encoding="utf-8") assert "massHaul.overlay.hidden" in drag # 판정 함수 한 곳에만 assert drag.count("massHaul.overlay.hidden") == 1 assert drag.count("massDocked()") == 3 assert "root.contains(massHaul.overlay)" in drag def test_뗀_유토는_노선_전체_세로(): mass = (B05 / "B05_Profile_UI_Profile_MassHaul.ts").read_text(encoding="utf-8") # 367-1 붙음 · 뗌 모두 노선 전체 세로 assert "viewRange: undefined," in mass