"""38-2 왼쪽 패널 「유가 · 전력」 컨테이너 — 재료 다음 따로 · 재료 컨테이너에서는 뺌 · 서버 재료 그룹 그대로.""" import json import re from pathlib import Path ROOT = Path(__file__).resolve().parents[2] SIDE = (ROOT / "M01_MasterData/M01_MasterData_UI_Side.ts").read_text(encoding="utf-8") def _array(name: str) -> list[str]: body = re.search(rf"const {name}(?:: \w+\[\])? = \[(.*?)\]", SIDE, re.S).group(1) return [x.strip().strip('"') for x in body.split(",") if x.strip()] def test_fuel_container_right_after_material(): groups = _array("GROUPS") assert groups[groups.index("재료") + 1] == "FUEL_GROUP" assert 'const FUEL_GROUP = "유가 · 전력";' in SIDE def test_material_container_has_no_fuel(): assert _array("MATERIAL_ORDER") == ["자재품목", "품셈재료"] assert "list.filter((f) => !isFuel(f))" in SIDE def test_fuel_container_reads_server_material_group(): # 서버로는 재료 그룹을 받아 유가전력 파일만 · 첫 받기에서 따로 부르지 않음 assert 'if (group === FUEL_GROUP) return (await refresh("재료")).filter(isFuel);' in SIDE assert "GROUPS.filter((g) => g !== FUEL_GROUP).map(refresh)" in SIDE # 거름 저장 열쇠 그대로 — 전에 고른 구분이 이어짐 assert "store: `m01.filter.재료.${FUEL}`" in SIDE def test_fuel_file_still_in_material_group(): data = json.loads( (ROOT / "resources/master_data/재료_유가전력.json").read_text(encoding="utf-8") ) assert data # 흐름도 넣을 값 판 · 단가산출 로직 요소 고르기는 서버 재료 그룹을 그대로 씀 panel = (ROOT / "M02_MasterTemplete/DataFlow/M02_DF_InputPanel_Build.ts").read_text( encoding="utf-8" ) assert '유가전력: { group: "재료", part: "유가전력" }' in panel