diff --git a/resources/tester/test_821_4_import_my_machine.py b/resources/tester/test_821_4_import_my_machine.py index f2ab13905..5b0910e21 100644 --- a/resources/tester/test_821_4_import_my_machine.py +++ b/resources/tester/test_821_4_import_my_machine.py @@ -30,6 +30,7 @@ from M02_MasterTemplete import M02_Sangeun_Copy as skc from M02_MasterTemplete import M02_Sangeun_FromHopyo as fh from M02_MasterTemplete import M02_Sangeun_Imported as imp from resources.tester.test_m02_labor_ref import world # noqa: F401 — 같은 임시 층 +from resources.tester.test_815_1_import_link import aliases, no_aliases # M01 별칭 칸 임시 ROOT = Path(__file__).resolve().parents[2] MAIN = ROOT / "resources/knowledge/original/경쟁사 프로그램/EST Plus 2/다산소프트/2026-07-main.estx" @@ -37,6 +38,16 @@ GEN = "E0000001016" # EST main 발전기 5.5kW GONE = [f"EQ{n:06d}" for n in range(656, 669)] +@pytest.fixture(autouse=True) +def _blank_aliases(request): + """진짜 마스터 기계 별칭(파워트로웰 = EQ000534 등) 유무와 무관 — 별칭 없는 사본에서 잼(820-1 정리 시험만 진짜 마스터).""" + if request.node.name == "test_cleanup_820_1": + yield + return + with no_aliases("EQ"): + yield + + @lru_cache(maxsize=1) def _main_raw() -> bytes: return MAIN.read_bytes() @@ -108,7 +119,7 @@ def test_direct_without_make() -> None: # ── ② 층 저장 길 ────────────────────────────────────────────────────── -TROWEL = 504 # EST main 「콘크리트 바닥 마감(Power Trowel)」 — 파워트로웰 3.73kW = 이제 품셈에 없음 +TROWEL = 504 # EST main 「콘크리트 바닥 마감(Power Trowel)」 — 파워트로웰 3.73kW = 별칭 없는 사본에서 못 이음(별칭 있으면 EQ000534) WANT = ("파워트로웰", "3.73kW") @@ -207,10 +218,21 @@ def test_blank_input_name_roundtrip() -> None: assert got and got["입력"]["전력 계약종별"] == "'일반용(갑)Ⅰ 저압'" -def test_main_504_amount_same() -> None: - """EST main 504 「콘크리트 바닥 마감(Power Trowel)」 = 원파일 저장 금액 546(파워트로웰 = 이제 못 이음 · 엑셀 값).""" +def test_main_504_amount_same(world) -> None: + """EST main 504 = 원파일 저장 금액 546 그대로 — 별칭 없는 사본 = 내 기계 예정 · 별칭 있으면 품셈 EQ000534.""" import test_810_2_native_doc as t - out = fn.emit(_main(), 504) - _, _, got = t.doc_and_money(out) - assert float(got["계"]) == 546 + def plan() -> tuple[dict, list]: + out = fn.emit(_main(), 504) + with store.at(world["company"]): # 개인 층 아님 = 안 만들고 예정만 적음 + mm.attach(out, _main()["기계구성"]) + return out, out["원본"].get("내기계예정") or [] + + out, todo = plan() + assert {"이름": WANT[0], "규격": WANT[1]} in todo + assert float(t.doc_and_money(out)[2]["계"]) == 546 + with aliases("EQ", {"EQ000534": "파워트로웰"}): # 승인 별칭 = 품셈 기계로 이어짐 + out, todo = plan() + assert not [m for m in todo if m["이름"] == WANT[0]] + assert "EQ000534" in json.dumps(out, ensure_ascii=False, default=str) + assert float(t.doc_and_money(out)[2]["계"]) == 546