- 설계내역서 밖 탭도 이동해 온 줄 = 같은 빨강 상자(줄 누름 · 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
65 lines
2.5 KiB
Python
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
|