diff --git a/resources/tester/test_b06_ditch_choice.py b/resources/tester/test_b06_ditch_choice.py index c0c9324e..cedbfe6a 100644 --- a/resources/tester/test_b06_ditch_choice.py +++ b/resources/tester/test_b06_ditch_choice.py @@ -87,3 +87,28 @@ def test_양성은_선택보다_기하가_먼저다() -> None: ditch_choice=True, ) assert design["ditch_enabled"] is False + + +def test_선택이_저장_patch_까지_실린다() -> None: + """⚠ 2026-09-09 화면 실측으로 잡은 자리 — 토글을 눌러도 **아무 일도 안 났다.** + + 선택이 캐시(`CrossDesignChoice`)·재계산(`Cross_Refresh`)·저장 patch 어느 쪽에도 + 실리지 않아 **눌린 값이 그 자리에서 버려졌다.** 칸 하나가 빠지면 조용히 사라지므로 + 통로 네 곳을 함께 지킨다. + """ + from B06_Section.B06_Section_Schema import CrossSectionPatch + + patch = CrossSectionPatch(chainage_m=20.0, ditch_choice=False) + dumped = {k: v for k, v in patch.model_dump().items() if v is not None} + assert dumped["ditch_choice"] is False, "「끔」이 병합에서 걷혀 정본에 안 남는다" + + def _reads(name: str) -> str: + return (PROJECT_ROOT / "B06_Section" / name).read_text(encoding="utf-8") + + for name in ( + "B06_Section_Cross_Design_Session.ts", # 캐시 칸 + "B06_Section_UI_Page.ts", # 캐시에 쓰는 자리 + "B06_Section_Cross_Refresh.ts", # 브라우저 재계산이 읽는 자리 + "B06_Section_UI_Page_Persist.ts", # [저장]·[확정] patch + ): + assert "ditch_choice" in _reads(name), f"{name} 에서 측구 선택이 빠졌다"