Files
Aislo/resources/tester/test_298_2_b07_buttons.py
T
eomsangdonandClaude Opus 5.5 17e6500cf6 fix(506-3 B07 · CAD 작은 흠): 저장 길 · 죽은 길 걷음 · CAD 되돌리기 · B09 인쇄 미리보기 · M02 도움말
- 1-A 도면 GET · 저장 PUT 한도 60 s · 저장 중 미리받기 쉼 · 끊긴 저장 = 목록 confirmed 로 판정
- 2 CAD 자동백업 열쇠 = b07:{프로젝트}:{도면} · 도각 편집 = b07-frame:{프로젝트} · [초기화] 같은 열쇠
- 3-1 [초기화] 물음 글 = 프로젝트 도각 그대로 · [도각 편집] → [기본 도각 복원] 안내
- 3-2 풀린 장 저장본 json · 수량표 찌꺼기 걷음(_write_manifest 한 곳)
- 5-1 확정 풀기 · 배치 · 축척 = mark_stage(save)
- 7-3 start_stage 가 DEV_UNLOCK 표식 남김
- 6-a navigateDrawing · onNavigate · hasPrev · hasNext 걷음 · 6-b cad-host-save 토글 걷음 · 4-2 B08 안 쓰는 글 11 걷음
- 6-f 특성 판 색 끌기 = 되돌리기 한 칸(paintNowCommitLater 한 벌) · 6-g LAYMRG 사본 길
- 4-1 B09 [인쇄 미리보기] = 저장 뒤 이동 · 단계 그대로 · 6-e M02 카드 도움말 DWG 한 줄
- 시험 test_506_3_* 둘 · cad/undo-506-3 · test_298_2_b07_buttons 열쇠 맞춤

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:48:36 +09:00

95 lines
3.3 KiB
Python

# -*- coding: utf-8 -*-
"""298-2 B07 좌측 아래 단추 줄 [?] [<] [>] [저장] [초기화].
못박는 것
- 줄 차례 — [도각 편집] = 윗줄 · 아래 줄(help-row) = [저장] [초기화](앞 [?] [<] [>] 는 공용) ·
[초기화] = danger-ghost(B05 · B06 과 같은 꼴) · 맨 오른쪽.
- [저장] = 이동 없이 고친 탭 저장 · 고친 것 없으면 요청 0 · 저장 뒤 단계 색 다시 읽음.
- [초기화] = 물음 → 오버레이 → POST reset → CAD 자동백업(도면마다) 지움 → 다시 읽음 ·
[취소] = 요청 0 · 실패 = 머묾(다시 읽음 없음) · 도각 편집 중 = 막음.
- 창구 = `POST /projects/{id}/design-drawings/reset` 본문 없음.
Node 헬퍼 `helper_298_2_b07_buttons.cjs` 가 저장 묶음을 돌림.
"""
from __future__ import annotations
import json
import os
import subprocess
from pathlib import Path
import pytest
HERE = os.path.dirname(os.path.abspath(__file__))
B07 = Path(HERE).parents[1] / "B07_DesignDetail"
def _read(name: str) -> str:
return (B07 / name).read_text(encoding="utf-8").replace("\r\n", "\n")
@pytest.fixture(scope="module")
def out():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_298_2_b07_buttons.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
return json.loads(proc.stdout)
def test_줄_차례_꼴():
page = _read("B07_DesignDetail_UI_Page.ts")
assert "frameRow.append(frameEditor.button);" in page
assert "actionRow.dataset.helpRow" in page
assert "actionRow.append(saveButton, resetButton);" in page
assert "actions.append(frameEditor.banner, frameRow, actionRow);" in page
reset = page[page.index("const resetButton = createButton({") :]
reset = reset[: reset.index("});")]
assert 'label: L("Common_Btn_Reset")' in reset
assert 'variant: "danger-ghost"' in reset
assert "resetDrawings(store)" in reset
save = page[page.index("const saveButton = createButton({") :]
save = save[: save.index("});")]
assert 'label: L("Common_Btn_Save")' in save
assert "saveDrawingsNow(store, refreshStages)" in save
assert "layout.setStages(state.stages)" in page
assert len(page.splitlines()) <= 700
def test_창구():
api = _read("B07_DesignDetail_Api_Fetch.ts")
block = api[api.index("export function resetDesignDrawings") :]
block = block[: block.index("}\n")]
assert "/projects/${projectId}/design-drawings/reset" in block
assert '{ method: "POST" }' in block
assert "body" not in block
def test_저장(out):
assert out["saveNone"] == {"calls": ["toast:info"], "saved": 0}
assert out["saveEdited"] == {
"calls": ["overlay+", "confirm:cross_s1", "overlay-", "toast:success"],
"saved": 1,
}
def test_초기화(out):
assert out["reset"] == [
"ask",
"overlay+",
"reset:p1",
"drop:OPEN_WEB_CAD__RECOVERY__b07:p1:cover",
"drop:OPEN_WEB_CAD__RECOVERY__b07:p1:cross_s1",
"toast:success",
"reload",
"overlay-",
]
assert out["resetCancel"] == ["ask"]
assert out["resetFail"] == ["ask", "overlay+", "reset:p1", "toast:error", "overlay-"]
assert out["resetFrame"] == ["toast:warning"]