- 둘째 기초 세부 줄 품 칸 = 서버 `원문`(0.871 그대로) · 금액 · 비목은 상자 합 몫 그대로 · 세부 고침도 원문 몫(머리 수량 · 화면배 안 나눔) - 더한 기초 머리 상자(새 `Sangeun_BaseHead`) — 기초마다 이름 · 수량(기준단위 몇 개) 칸 · [되돌림] · [기초 빼기] - 새 `logic/M02_Sangeun_Undo` — 뺀더한줄 기억 · 되살림(열쇠 당김 · 밂) · 처음수량 되돌림 · 넣을 때 처음수량 적음 - 되살림 띠에 뺀 더한줄도 · 일위대가 줄 패치 뺀더한줄 이음(RowSk · LinePatch) - 낡은 시험 고침: test_727 세부 고침 ÷수량 기대 → 원문 그대로 · test_717_2b 모델 인라인에 Undo 추가 - 새 시험 test_748_0_sk_undo(거울 helper_748_0)
41 lines
1.7 KiB
Python
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"]
|