test(822-1b): test_821_4 를 진짜 마스터 별칭에 안 기대게 — 별칭 비운 사본(no_aliases)에서 못 이은 기계 견본 재기
까닭: 파워트로웰이 품셈 기계(EQ000534 별칭)로 이어져 「못 이은 기계」 견본이 사라짐. 820-1 정리 시험만 진짜 마스터. 504 시험 = 별칭 없을 때 내 기계 예정 · 별칭 있을 때 EQ000534 · 금액 546 그대로. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user