"""785-4 불러오기 화면 껍데기 — 가운데 상세 페이지(마법사) 없음 · 왼쪽 [불러오기] → 바로 본 칸 엑셀 + 오른쪽 목록 · 머리 막대 [끝내기] · 좁은 판 줄 판 자리 · 부품 상자만 · 700 줄(785-7 — 안 이은 줄 띠 · 마법사 단가산출 걸음 · 옛 캐시 걷음 반영). 소스 글만 읽음(서버 · 화면 없이 돎).""" import re from pathlib import Path ROOT = Path(__file__).resolve().parents[2] M02 = ROOT / "M02_MasterTemplete" def _src(name: str) -> str: return (M02 / f"M02_MasterTemplete_Hopyo_{name}.ts").read_text(encoding="utf-8") def test_가운데_상세_페이지_없음(): assert not (M02 / "M02_MasterTemplete_Hopyo_Wizard.ts").exists() every = "\n".join(p.read_text(encoding="utf-8") for p in M02.glob("*.ts")) for gone in ("buildHopyoWizard", "HopyoWizard", "wantSangeun", "M02_WizSkCheck", "STEPS"): assert gone not in every, gone for key in ("M02_WizSkHead", "M02_WizIlwiHead", "M02_SkHint"): assert key not in (ROOT / "ui_template" / "ui_template_locale_m2.ts").read_text("utf-8") def test_누름_하나_바로_엑셀(): side = _src("Side") choose = side.split("async function choose()")[1].split("input.addEventListener")[0] assert "input.click();" in choose # [불러오기] = 바로 파일 고르기 창 change = side.split('input.addEventListener("change"')[1].split("async function leaveOk")[0] assert ( "uploadHopyo(scopeOf(pick), file)" in change and "return show(pick, got, true);" in change ) show = side.split("async function show(")[1].split("async function showLedger")[0] assert "buildHopyoImport({" in show and "opt.show(" in show # 올림 뒤 본 칸 바로 imp = _src("Import") assert "m.buildHopyoSheet({" in imp and "headExtra: [layerNote, finish]" in imp def test_결과_층_고름_둘_이상일_때만(): side = _src("Side") assert "layers.length > 1" in side and "seg.hidden = false;" in side assert "seg.hidden = true;" in side # 처음 숨김 — 일반(개인 하나)은 안 보임 assert 'let pick: ManageLayer = "personal";' in side def test_끝내기_머리_막대_끝냄_뒤_빈_본_칸(): imp = _src("Import") end = imp.split("async function end()")[1] assert ( "skCount()" in end.split("showConfirmDialog(")[0] ) # 안 만든 단가산출 = 물음 글만(막지 않음) assert "deleteHopyo(scope, file.키)" in end and "a.onEnded();" in end side = _src("Side") assert "onEnded: () => {" in side and "void refresh();" in side sheet = _src("Sheet") assert "dropButton" not in sheet and "onDeleted" not in sheet # [삭제] 걷음 def test_부품_상자만_700줄_늘리지_않음(): for name in ("Import", "Side", "Sheet", "SheetSk"): src = _src(name) assert len(src.splitlines()) <= 700, name assert not re.search(r"#[0-9a-fA-F]{3,6}\b|rgb\(", src), name # 색 = 공통 값 for name in ("Import", "SheetSk"): assert not re.search(r'el\("(button|input|select)"| false" in _src("Import") assert "location.hash" not in _src("Import") + _src("Side") # 새 해시 열쇠 없음