"""M02 단가산출 칸 목록 줄(PLAN 717-2a · `M02_Labor_Ref.summary` sangeun 갈래) — 임시 storage. 바탕 = 로직 「키 이름」 · 참조 = SK 키 · 없음 = None · 고친 줄 수 = 덮개 + 더한줄 + 뺀줄 · 쓰는 곳 수 = 그 SK 를 바탕 · 더한줄로 담은 문서 수 · 일위대가(precombo) 줄엔 안 붙음. """ from M01_MasterData import M01_MasterData_Store as m01 from M02_MasterTemplete import M02_Labor_Ref as refs from M02_MasterTemplete import M02_MasterTemplete_Store as store from M02_MasterTemplete.M02_Labor_Expand import Expand from resources.tester.test_m02_labor_ref import MINE, world # noqa: F401 — 같은 임시 층 PCT = "GC001109" def _sk(folder, **doc): with store.at(folder): return refs.create("sangeun", {"이름": "목록 시험", "단위": "㎡", "더한줄": [], **doc})[ "이름" ] def _row(folder, kind, key): return refs.summary(folder, kind, key, Expand(m01.loaded()[1])) def test_sangeun_row_base_edits_users(world): mine = world["personal"] a = _sk(mine, 바탕={"로직": PCT}, 덮개={"labor:LB000036#0": {"qty": 0.5}}, 뺀줄=["pct:x#0"]) name = m01.loaded()[1].logic(PCT)["이름"] row = _row(mine, "sangeun", a) assert row["바탕"] == f"{PCT} {name}".strip() assert row["고친줄수"] == 2 and row["쓰는곳수"] == 0 assert row["제목"] == "목록 시험" and row["단위"] == "㎡" # 바탕 참조 SK(740-1) = 펼쳐 담음 → 바탕 = 기초 · 고친 줄 = 겹친 덮개 · 뺀줄 + 더한줄 · 쓰는 곳 0 b = _sk( mine, 바탕={"참조": {**MINE, "키": a}}, 더한줄=[{"종류": "인력", "요소": "LB000036", "이름": "보통인부", "단위": "인", "수량": 1}], ) row_b = _row(mine, "sangeun", b) assert row_b["바탕"] == f"{PCT} {name}".strip() and row_b["고친줄수"] == 3 assert _row(mine, "sangeun", a)["쓰는곳수"] == 0 # 바탕 없음 c = _sk(mine) row_c = _row(mine, "sangeun", c) assert row_c["바탕"] is None and row_c["고친줄수"] == 0 def test_precombo_row_has_no_sangeun_fields(world): with store.at(world["personal"]): sc = refs.create("precombo", {"이름": "조합", "담은로직": []})["이름"] row = _row(world["personal"], "precombo", sc) assert not {"바탕", "고친줄수", "쓰는곳수"} & set(row)