test(M02): 27-2 새 규칙에 맞춤 — 회사 층 갈라 내기 권한 · 조합 이름 읽기 · 좌측 컨테이너 차례(PLAN 27-2)
- test_m02_layers_store: 갈라 내기 = 회사 층 쓰기 권한(일반 403 · 회사 관리자 UC7-000001) · 조합 이름은 Combo_Store.find - test_m02_structure_options: 좌측 차례 일위대가 조합 → 구조물 조합 → 옵션 → 도면 · onOpen 이 일위대가 고름도 지움 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
This commit is contained in:
@@ -19,6 +19,7 @@ from fastapi.testclient import TestClient
|
||||
from common_util.common_util_auth import verify_session
|
||||
from config import config_system
|
||||
from M01_MasterData import M01_MasterData_Store as m01
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Combo_Store as combos
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Router_Items as items_router
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Router_Layers as layers_router
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Store as store
|
||||
@@ -111,10 +112,13 @@ def test_회사_층_첫_진입_뼈대와_쓰기_권한(world):
|
||||
assert [(r["key"], r["열"]) for r in items] == [("SC7-000001", "cw")] # 회사 키(26-4a)
|
||||
assert items[0]["도번"].startswith("SD") and (root / "structure/cw.json").is_file()
|
||||
assert client.get("/api/m02/items?layer=company&owner=9").status_code == 403 # 남의 회사
|
||||
# 일위대가(UA) 갈라 내기는 M01 시스템 마스터에 쓰므로 회사 관리자도 못 함
|
||||
body = {"본뜬키": "UA000001", "담은로직": [], "이름": "x"}
|
||||
# 일위대가 갈라 내기(27-2c) = 회사 층 쓰기 권한 — 일반 사용자 403 · 회사 관리자는 회사 조합(UC)
|
||||
branch = "/api/m02/layers/company/structures/cw/combo"
|
||||
body = {"본뜬키": "UA000001", "담은로직": [{"로직": "GF000221"}], "이름": "x"}
|
||||
assert _as(world).post(branch, json=body).status_code == 403
|
||||
admin = _as(world, "ADMIN")
|
||||
assert admin.post("/api/m02/layers/company/structures/cw/combo", json=body).status_code == 403
|
||||
made = admin.post(branch, json=body)
|
||||
assert made.status_code == 200 and made.json()["키"] == "UC7-000001"
|
||||
assert admin.delete(f"{url}?판={client.get(url).json()['판']}").status_code == 409 # 쓰는 양식
|
||||
|
||||
|
||||
@@ -149,7 +153,7 @@ def test_회사_항목을_개인으로_복사(world):
|
||||
admin.post(f"{base}/structures/cw/use-combo", json={"종류": "일위대가", "키": "UA000004"})
|
||||
row = admin.get("/api/m02/items?layer=company").json()[0]
|
||||
ss = row["key"]
|
||||
ua_name = items_router.items_store._combo_names()["UA000004"]
|
||||
ua_name = combos.find("UA000004")["이름"]
|
||||
assert row["names"] == { # 키 대신 화면 이름
|
||||
"일위대가": ua_name,
|
||||
"자재조합": "회사 자재",
|
||||
|
||||
@@ -120,9 +120,16 @@ def test_좌측_줄은_구조물_집계_양식_아래_한_줄_같은_한_곳에
|
||||
assert side.index("옵션: section(options.title") < side.index(
|
||||
'도면: section(L("M02_KindDrawing")'
|
||||
)
|
||||
assert "children: [summary, ...(extras ? [extras.옵션, extras.도면] : [])]" in side
|
||||
assert "onOpen: () => (options.clear(), paint())" in side # 자재 조합을 열면 이 줄 고름 지움
|
||||
assert "onOpen: () => (matset.clear(), paint())" in side # 이 줄을 열면 자재 조합 고름 지움
|
||||
# 차례 = 일위대가 조합(27-2b) → 구조물 조합 → 옵션 → 도면 양식
|
||||
order = [
|
||||
"...(labor ? [section(labor.title, labor.body)] : []),",
|
||||
" summary,",
|
||||
" ...(extras ? [extras.옵션, extras.도면] : []),",
|
||||
]
|
||||
assert "\n".join(order) in side
|
||||
# 자재 조합을 열면 이 줄 · 일위대가 고름 지움 / 이 줄을 열면 자재 조합 · 일위대가 고름 지움
|
||||
assert "onOpen: () => (options.clear(), labor?.clear(), paint())" in side
|
||||
assert "onOpen: () => (matset.clear(), labor?.clear(), paint())" in side
|
||||
paint = side.split("function paint(): void {")[1].split("\n }\n")[0]
|
||||
assert "if (opt.getOpen()) options.clear();" in paint # 양식을 열면 이 줄 고름 지움
|
||||
api = (ROOT / "M02_MasterTemplete/M02_MasterTemplete_Api_Fetch.ts").read_text("utf-8")
|
||||
|
||||
Reference in New Issue
Block a user