Files
Aislo/resources/tester/test_748_0_sk_undo.py
T
eomsangdon 94e330a5f3 feat(748-0): 단가산출 둘째 기초 — 세부 품 M01 원문 · 머리 수량 칸 하나 · 되돌림 셋(기초 빼기 · 더한 항목 빼기 · 더한 항목 수량)
- 둘째 기초 세부 줄 품 칸 = 서버 `원문`(0.871 그대로) · 금액 · 비목은 상자 합 몫 그대로 · 세부 고침도 원문 몫(머리 수량 · 화면배 안 나눔)
- 더한 기초 머리 상자(새 `Sangeun_BaseHead`) — 기초마다 이름 · 수량(기준단위 몇 개) 칸 · [되돌림] · [기초 빼기]
- 새 `logic/M02_Sangeun_Undo` — 뺀더한줄 기억 · 되살림(열쇠 당김 · 밂) · 처음수량 되돌림 · 넣을 때 처음수량 적음
- 되살림 띠에 뺀 더한줄도 · 일위대가 줄 패치 뺀더한줄 이음(RowSk · LinePatch)
- 낡은 시험 고침: test_727 세부 고침 ÷수량 기대 → 원문 그대로 · test_717_2b 모델 인라인에 Undo 추가
- 새 시험 test_748_0_sk_undo(거울 helper_748_0)
2026-11-02 22:05:31 +09:00

41 lines
1.7 KiB
Python

"""748-0 지킴 — SK 둘째 기초 세부 품 = M01 원문(머리 수량 안 곱함) · 고침 꼴 · 빼기 기억 · 되살림 · 수량 처음값.
(서버 짝 = `test_744_1_sk_detail_undo.py`)"""
from __future__ import annotations
import json
import subprocess
from pathlib import Path
import pytest
HERE = Path(__file__).resolve().parent
def test_세부_원문_품_고침_빼기_되살림_처음값():
proc = subprocess.run( # noqa: S603 — 고정 실행 파일
["node", str(HERE / "helper_748_0_sk_undo.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
out = json.loads(proc.stdout)
assert float(out["shownQty"]) == pytest.approx(0.871) # 곱하지 않은 M01 원문
assert out["lineQty"] == pytest.approx(0.871)
assert out["lineAmount"] == pytest.approx(871) # 상자 몫은 그대로
assert out["t"] == 1
assert out["cover"]["labor:LB000101#0"]["qty"] == pytest.approx(0.9) # 머리 수량 안 나눔
assert out["coverShown"] == pytest.approx(0.9) # 다시 그려도 같음
assert out["manQty"] == 5 and out["manBack"] == 2 # [되돌림] = 넣을 때 수량
drop = out["afterDrop"]
assert drop["adds"] == 1 and drop["gone"][0]["차례"] == 0
assert drop["pick"] == {"add:#0": "MT1"} # 뒤 더한줄 열쇠 당김
assert out["goneRows"][0]["cid"] == "gone:0"
back = out["afterBack"]
assert back["adds"] == ["LB000002", "GF000316"] and back["gone"] is None
assert back["pick"] == {"add:#1": "MT1"} # 되살림 = 밂
assert out["baseGone"] == {"adds": 1, "name": "둘째 기초", "pick": {}}
assert out["baseBack"] == ["LB000002", "GF000316"]