"""일위대가 불러오기 한시(PLAN 718-1 · 743-1) — 올림 지문 · [끝내기] 지움. 같은 엑셀 작업 중 다시 올림 = 그 파일 이어서(새 키 없음) · [끝내기] = HP · 격자 · 맞춤셈 캐시 0 · 만든 일위대가 · 별칭 장부 그대로 · 끝낸 같은 엑셀 다시 올림 = 새 키(743-1 · 409 걷음) · 옛 HP(지문 없음) = 파일 그대로 목록에서만 숨김 · 키 번 = 지운 뒤에도 다시 안 씀. 층 = 임시 폴더. """ import json from M02_MasterTemplete import M02_Hopyo_Fit as fit from M02_MasterTemplete import M02_Hopyo_Store as hs from M02_MasterTemplete import M02_Template_Layers as layers from resources.tester.test_m02_hopyo_excel import NORTH, URL, _post, client # noqa: F401 ALL = "/api/m02/layers/personal/hopyo-build-all" def _keys(client): return [r["키"] for r in client.get(URL.format("personal")).json()["줄"]] def test_이어서_끝내기_지움_겹침_막음(client): folder = layers.personal_dir(7, 42) first = _post(client).json() assert first["키"] == "HP-000001" and len(first["지문"]) == 64 again = _post(client).json() assert again["키"] == "HP-000001" and again["이어서"] is True # 작업 중 같은 엑셀 = 새 키 없음 assert _keys(client) == ["HP-000001"] made = client.post(ALL, json={"층": "personal", "키": "HP-000001"}).json() n = len(made["만듦"]) # 729-2 — 남은 줄 있는 호표 = 실패(남은줄) assert n and n + len(made["실패"]) == 68 and all(x["남은줄"] for x in made["실패"]) hs.remember(folder, {"장부 줄": {"갈래": "안 씀"}}) # 별칭 장부 = 끝내기 뒤 남음 cache = fit.cache_path(folder, "HP-000001") cache.write_text("{}", encoding="utf-8") old_cache = cache.with_name("_".join(cache.name.split("_")[:2]) + "_옛판_1.json") old_cache.write_text("{}", encoding="utf-8") sc_before = sorted((folder / "precombo").glob("SC-*.json")) res = client.delete(URL.format("personal") + "/HP-000001") assert res.status_code == 200 and res.json() == {"지움": "HP-000001", "만든": n} assert not list((folder / hs.DIRNAME).glob("HP-*.json")) # 이번 HP 0 assert not list((folder / hs.DIRNAME / hs.GRID).glob("HP-*.json")) assert not cache.exists() and not old_cache.exists() assert hs.memory(folder) == {"장부 줄": {"갈래": "안 씀"}} assert sorted((folder / "precombo").glob("SC-*.json")) == sc_before # 만든 일위대가 그대로 again = _post(client) # 743-1 — 끝낸 같은 엑셀 = 다시 올림 됨(새 키) assert again.status_code == 200 and again.json()["키"] == "HP-000002" assert _keys(client) == ["HP-000002"] assert sorted((folder / "precombo").glob("SC-*.json")) == sc_before def test_만든_것_없이_지움_다시_올림_키_번_안_되씀(client): assert _post(client).json()["키"] == "HP-000001" assert client.delete(URL.format("personal") + "/HP-000001").json()["만든"] == 0 got = _post(client) # 만든 것 없음 = 막지 않음 · 번은 이어서 assert got.status_code == 200 and got.json()["키"] == "HP-000002" def test_옛_HP_목록에서만_숨김(client): folder = layers.personal_dir(7, 42) / hs.DIRNAME folder.mkdir(parents=True) old = folder / "HP-000007.json" old.write_text(json.dumps({"키": "HP-000007", "파일": "옛.xls", "호표": []}), encoding="utf-8") assert _keys(client) == [] assert client.get("/api/m02/layers/personal/hopyo-picks").json()["줄"] == [] assert _post(client).json()["키"] == "HP-000008" # 옛 번 뒤로 assert old.is_file() and _keys(client) == ["HP-000008"] def test_결과_단가산출_산근_블록_기초_SK_고름대기_겹침_없음(client): folder = layers.personal_dir(7, 42) assert _post(client).json()["키"] == "HP-000001" url = URL.format("personal") + "/HP-000001/sangeun" assert client.post(url).status_code == 409 # 729-1 — 맞춤 셈 전 fit.run_job(folder, "HP-000001") got = client.post(url) assert got.status_code == 200, got.text got = got.json() wait = len(got["고름대기"]) assert got["블록"] > 0 and len(got["만듦"]) + wait == got["블록"] and got["그대로"] == 0 docs = [json.loads(p.read_bytes()) for p in sorted((folder / "sangeun").glob("SK-*.json"))] assert len(got["만듦"]) == got["기초"] + got["SK"] assert len(docs) + len(got["같은것씀"]) == len(got["만듦"]) # 같은 내용 SK 는 한 벌(733-1) one = docs[0] assert one["바탕"]["로직"] and one["본뜬"]["키"].startswith("HP-000001 단산") # 바탕 없는 SK 0 assert one["구분"] == "실무자료" and one["단위"] and one["본뜬"]["갈래"] in ("기초", "SK") again = client.post(url).json() # 다시 = 그대로(겹침 없음) assert again["만듦"] == [] and again["그대로"] == len(got["만듦"]) res = client.delete(URL.format("personal") + "/HP-000001").json() assert res["만든"] == len(docs) # 같은 내용 SK 한 벌 — 사본 걷은 문서 수 assert len(list((folder / "sangeun").glob("SK-*.json"))) == len(docs) # 남음 assert _post(client).status_code == 200 # 743-1 — 다시 올림 됨