- 마스터 층 구조물 항목 51개 지움 — 나무 지우기(tree.apply delete) → 집계표 저장(store.write) 한 줄기 · 집계표 구조물 열 · SS 장부 줄 · structure/area/material 파일 153개 · 남김 = no · sta · 비고 열 · 변수 · 쪽줄 · 합계줄 · 바인딩규칙 · 자재조합 · 구조물옵션표시 · drawing · M01 · 회사 · 개인 층 · 프로젝트 복사본 · 지운 열의 열너비만 뺌 - 키 · 번호 다시 안 씀 — 장부 다음 52(새 항목 SS000052) · 지운번호 51개 기록(새 번호는 SD-000001 모양이라 옛 8자리와 안 겹침) - 지우기 전 사본 tmp/마스터_집계표_초기화전_0930/(git 밖 · 156 파일 = 지우기 전과 같음) - 시험 안 견본 fixtures/m02_master_sample(옛 집계표 · 장부 · 자재조합 · rv · c4 · pp_len · ms 세 파일 · 도면 줄임) + helper_m02_master_sample — 실제 마스터를 읽던 시험 일곱(table_fill · template_layers · structures_summary_snapshot · item_copy_complete · m02_tree · m02_item_inputs · spreadsheet_saved_values)을 견본으로 · M01 쓰는 곳 찾기(users_of) 시험은 이미 임시 표(combo_inputs)라 그대로 - 새 시험 test_m02_empty_master — 빈 마스터에서 항목 0 · 빈 나무 · 첫 화면 길 · 새 폴더 · 새 항목(SS000052 · SD-000001) · 지우기 · 고르기 모달 마스터 0 · 프로젝트 복사본 calc 그대로 · 원본없음 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
"""저장 뒤 식 · 값 유지 — M02 면적산출 · 재료산출 저장본을 서버 엔진으로 다시 풀면 저장된 `계산값` 과 같음.
|
|
|
|
시험 안 견본 저장본(`fixtures/m02_master_sample` · PLAN 26-5a)을 읽기만 함.
|
|
저장 때 서버가 적은 값과 지금 엔진 풀이가 어긋나면 화면을 다시 열 때
|
|
값이 달라 보임.
|
|
"""
|
|
|
|
import json
|
|
import shutil
|
|
|
|
import pytest
|
|
|
|
from common_util import common_util_spreadsheet as spreadsheet
|
|
from resources.tester.helper_m02_master_sample import SAMPLE as FOLDER
|
|
|
|
pytestmark = pytest.mark.skipif(shutil.which("node") is None, reason="node 가 없음")
|
|
|
|
|
|
def _books() -> list[tuple[str, dict]]:
|
|
out = []
|
|
for kind in ("area", "material"):
|
|
for path in sorted((FOLDER / kind).glob("[!.]*.json")):
|
|
book = json.loads(path.read_text(encoding="utf-8"))
|
|
if isinstance(book, dict) and book.get("시트"):
|
|
out.append((f"{kind}/{path.stem}", book))
|
|
return out
|
|
|
|
|
|
def test_저장본_서버_재계산_같음():
|
|
books = _books()
|
|
assert any("계산값" in b for _, b in books), "계산값 있는 저장본이 없음"
|
|
fresh = spreadsheet.recalc_workbooks([b for _, b in books])
|
|
diffs = []
|
|
for (name, book), values in zip(books, fresh):
|
|
if "계산값" not in book:
|
|
continue # 옛 저장본 — 풀리기만 하면 됨
|
|
saved = book["계산값"]
|
|
for sheet, cells in values.items():
|
|
for addr, v in cells.items():
|
|
if saved.get(sheet, {}).get(addr) != v:
|
|
diffs.append(
|
|
f"{name} {sheet}!{addr}: 저장 {saved.get(sheet, {}).get(addr)} · 지금 {v}"
|
|
)
|
|
for sheet, cells in saved.items():
|
|
for addr in cells:
|
|
if addr not in values.get(sheet, {}):
|
|
diffs.append(f"{name} {sheet}!{addr}: 저장에만 있음")
|
|
assert not diffs, "\n".join(diffs[:30])
|