"""779-2 불러오기 엑셀 하이라이트 재료 — 목록 `줄상태` 수 = 줄 수 · 상태 = 줄 표지(809-1 · `View.listing`) · `hopyo-marks` 길 읽기만(층 폴더 파일 변화 0) · 블록 판정 = 불리는 블록 「가져온 식」 · 안 불림 None · SK = 만든 것.""" import hashlib from M02_MasterTemplete import M02_Template_Layers as layers from resources.tester.test_m02_hopyo_excel import NORTH, URL, _post, client # noqa: F401 # ruff: noqa: F811 KEY = "HP-000001" def _tree(root) -> dict[str, str]: return { str(p.relative_to(root)): hashlib.sha256(p.read_bytes()).hexdigest() for p in sorted(root.rglob("*")) if p.is_file() } def _ready(client): res = _post(client, data=NORTH.read_bytes(), name=NORTH.name) assert res.status_code == 200 and res.json()["키"] == KEY return layers.personal_dir(7, 42) def test_줄상태_수_줄_수_표지_같음(client): _ready(client) base = URL.format("personal") whole = client.get(f"{base}/{KEY}").json() assert len(whole["호표"]) == 68 and whole["셈"]["끝"] is True # 뒤 셈 없음(809-1) for h in whole["호표"][:4]: one = client.get(f"{base}-view/{KEY}/{h['번']}").json()["줄"] assert len(h["줄상태"]) == len(one) == h["맞춤"][1], h["번"] assert [x[1] for x in h["줄상태"]] == [r["표지"] for r in one] assert [x[2] for x in h["줄상태"]] == [ r["갈래"] == "로직" or r["표지"] == "연결됨" for r in one ] assert h["맞춤"][0] == sum(x[2] for x in h["줄상태"]) and h["만든"] is None assert [x[0] for x in h["줄상태"]] == list(range(len(h["줄상태"]))) assert whole["맞춤"][1] == 415 def test_marks_읽기만_가져온_식_판정(client): folder = _ready(client) base = URL.format("personal") before = _tree(folder) got = client.get(f"{base}-marks/{KEY}") assert got.status_code == 200, got.text rows = got.json()["블록"] assert _tree(folder) == before # 읽기만 — 파일 변화 0 assert rows and [r["번"] for r in rows] == sorted(r["번"] for r in rows) assert all(r["판정"] == ("가져온 식" if r["부름"] else None) for r in rows) # 경쟁사 로직 인정 assert all("고를수" not in r and r["이름"] for r in rows) assert all(r["SK"] is None and r["갈래"] is None and r["못옮김"] == [] for r in rows) # 778-5 D-6 — 엑셀 셈 어긋남 덧칸(780-1 모든 블록) · 2 · 33 = 엑셀 합이 줄 뺌 · 4 … 78 = 일위대가 밖 assert {r["번"] for r in rows if r["어긋남"]} == {2, 33, 64, 95, 4, 44, 48, 77, 78} assert client.get(f"{base}-marks/HP-999999").status_code in (404, 400)