Files
Aislo/resources/tester/test_836_5_memory_doc.py
T
eomsangdonandClaude Sonnet 5.5 a2a123e1c7 feat(836-5): 불러오기 저장 전 단가산출도 수식 보기 — 미리 보기 문서째 서버가 읽어 줄 쌓기로 그림
- 줄 쌓기 화면 `memory` 옵션(저장 전 문서) — 빈 키 + 몸 `본` · 왼쪽 보기만 · 디스크 쓰기 0
- 서버 `…/sangeun/-/doc/read` · 미리 셈 몸 `본`(읽기 권한이면 됨)
- 지킴 시험 `test_836_5_memory_doc`(STmate 봉화 · EST 북부 · 금액 = 저장 SK 와 같음) · 시험 둘 문자열 맞춤

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-15 13:51:24 +09:00

74 lines
3.5 KiB
Python

# ruff: noqa: F811 — 임시 층 fixture(world)를 test_m02_labor_ref 에서 받아 씀
"""836-5 저장 전 단가산출(불러오기 미리 보기)도 수식 보기 — 임시 storage · M01 그대로.
① 미리 보기 문서째 수식 길 읽기(`Sk_Path.read_memory`) = 디스크 쓰기 0 · 금액 = 저장한 SK 를 읽은 값 · 미리 셈(`본`)도 쓰기 0
② 화면 — 줄 쌓기가 빈 키 + 저장 전 문서를 서버에 문서째 읽힘 · 왼쪽은 보기만 · 탭은 그 문서가 있을 때만 수식
실무 엑셀 없으면 ① skip.
"""
from __future__ import annotations
from pathlib import Path
import helper_m02_hopyo_golden as golden
import pytest
from M02_MasterTemplete import M02_Doc_Sk_Path as path
from M02_MasterTemplete import M02_Hopyo_Excel as hx
from M02_MasterTemplete import M02_Hopyo_Store as hs
from M02_MasterTemplete import M02_MasterTemplete_Store as store
from M02_MasterTemplete import M02_Sangeun_FromHopyo as fh
from resources.tester.test_m02_labor_ref import world # noqa: F401 — 같은 임시 층
ROOT = Path(__file__).resolve().parents[2]
def _files(folder: Path) -> dict[str, int]:
return {str(p.relative_to(folder)): p.stat().st_mtime_ns for p in folder.rglob("*") if p.is_file()} # fmt: skip
@pytest.mark.parametrize(
("tag", "no"), [("봉화", 3), ("북부청임도", 2)]
) # STmate 원파일 · 엑셀(EST)
def test_memory_doc_read_writes_nothing_same_as_saved(world, tag, no) -> None:
src = golden.FILES.get(tag)
if src is None or not src.exists():
pytest.skip(f"실무 엑셀 없음 {tag}")
folder, data = world["personal"], src.read_bytes()
with store.at(folder):
parsed = hx.read_book(src.name, data)
row = hs.save(folder, src.name, parsed, {"이름": "sub1임시"}, None, hs.fingerprint(data))
fh.keep(folder, row["키"], src.name, data)
with store.at(folder):
seen = fh.draft(folder, row["키"], no)
before = _files(folder)
got = path.read_memory(seen["문서"]) # 저장 전 문서째
asked = path.preview("-", {"본": seen["문서"], "문서": got["문서"]}) # 미리 셈
assert _files(folder) == before # 읽기 · 미리 셈 = 디스크 쓰기 0
assert got["판"] == "" and got["셈"] and asked["셈"] == got["셈"]
made = fh.make(folder, row["키"], no, doc=seen["문서"]) # [저장]
saved = path.read(made["이름"])
assert saved["셈"] == got["셈"] # 금액 = 저장한 SK 와 같음
with pytest.raises(store.StoreError):
path.read_memory("문서 아님")
def test_screen_memory_doc_stack_view() -> None:
stack = (ROOT / "A00_Common" / "line_stack_screen.ts").read_text(encoding="utf-8")
assert "memory?: () => Record<string, unknown> | null;" in stack
assert 'cp.route(saved ? "-" : key, path)' in stack and "본: saved" in stack
assert 'call<Loaded>("/read", {})' in stack and "left.inert = !!mem();" in stack
tabs = (ROOT / "M02_MasterTemplete" / "M02_MasterTemplete_Sangeun_Tabs.ts").read_text(
encoding="utf-8"
)
assert (
"const doc = !!k || !!opt.page || !!opt.memory?.();" in tabs
and "memory: opt.memory," in tabs
)
detail = (ROOT / "M02_MasterTemplete" / "M02_MasterTemplete_Sangeun_Detail.ts").read_text(
encoding="utf-8"
)
assert "doc.가져온 &&" in detail and "memory: () =>" in detail
router = (ROOT / "M02_MasterTemplete" / "M02_Doc_Router.py").read_text(encoding="utf-8")
assert '"/layers/{layer}/sangeun/-/doc/read"' in router and "write=body.본 is None" in router