Files
Aislo/resources/tester/test_257_2_b09_pick_blank_grand.py
T
eomsangdonandClaude Sonnet 5.5 f468a3a3fa feat(b09): 이동해 온 줄 빨강 모든 탭 · 비고 빈 줄 지움 · 총공사비 아래 고정 줄 (257-2)
- 설계내역서 밖 탭도 이동해 온 줄 = 같은 빨강 상자(줄 누름 · Esc · 방향키로 풂)
- 설계내역서 비고 「빈 줄 N」 지움(Py · TS 짝 · 「(제외금액)」 둠)
- 총괄설계내역서 · 공사원가계산서 총공사비 = 템플릿 아래 고정 줄(줄 이동 누름 빠짐)
- 시험 test_257_2 · 기대값 고침(145_3 · 145_4 · 182 · 185_1 · 242_1)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SE9MxeXTu2uaDZ55BJowAY
2026-10-11 14:05:02 +09:00

65 lines
2.5 KiB
Python

"""257-2 B09 이동해 온 줄 = 모든 탭 빨강 상자 · 비고 「빈 줄 N」 없음 · 총공사비 = 표 아래 고정 줄.
- 쉘 = 설계내역서 밖 · 묶음 아닌 탭에도 줄 범위 [at, at] 빨강(pickClass) · 줄 누름 · Esc · 방향키로 풂(unpickOnRelease)
- 비고 = 제목 줄 「(제외금액)」만 · 묶음 줄 빈칸(Py · TS 짝 · blank 수는 줄 값 그대로)
- 총괄 · 원가계산서 총공사비(grand) = `TabTable.total`(몸 줄에서 빠짐 · 줄 이동 누름 없음 — 185-1 시험이 값 확인)
"""
import re
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from resources.tester.helper_b09_group_cards import COMMON, GROUPS, RAW, TABS, run # noqa: E402
B09 = ROOT / "B09_Estimation"
def test_쉘_모든_탭_빨강_배선():
shell = (B09 / "B09_Estimation_UI_Shell.ts").read_text("utf-8")
assert "!bill && at >= 0 ? [at, at] : null" in shell
assert "pickClass(range, i)" in shell and "unpickOnRelease(table.root)" in shell
assert "table.focusRow(at, false)" in shell
def test_풂_줄_누름_Esc_빨강만_지움():
out = run(
[COMMON, TABS, GROUPS],
"""
const root = document.createElement("div");
const rows = [0, 1, 2].map((i) => {
const tr = document.createElement("tr");
tr.dataset.i = String(i);
if (i === 1) tr.classList.add("is-pick", "is-pick-top", "is-pick-end");
root.append(tr);
return tr;
});
unpickOnRelease(root);
const before = rows.map((t) => t.className);
key("Escape");
const afterEsc = rows.map((t) => t.className);
rows[1].classList.add("is-pick");
root.click();
const afterClick = rows.map((t) => t.className);
console.log(JSON.stringify({ before, afterEsc, afterClick }));
""",
RAW
+ """
E.prototype.querySelectorAll = function () { return this.all("TR").filter((t) => t.cls.has("is-pick")); };
""",
)
assert out["before"] == ["", "is-pick is-pick-top is-pick-end", ""]
assert out["afterEsc"] == ["", "", ""]
assert out["afterClick"] == ["", "", ""]
def test_비고_빈_줄_없음_Py_TS_짝():
py = (B09 / "B09_Estimation_Calc_Bill.py").read_text("utf-8")
ts = (B09 / "B09_Estimation_Calc_Bill.ts").read_text("utf-8")
assert "빈 줄 {" not in py and not re.search(r"빈 줄 \$\{", ts)
assert 'row["note"] = "(제외금액)" if row["key"] == "sec:G" else ""' in py
assert 'row.note = row.key === "sec:G" ? "(제외금액)" : ""' in ts