From 4ba9d64c0949b66b5ad8e3e28c33ddc17b8b0086 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 15 May 2026 15:36:16 +0000 Subject: [PATCH] =?UTF-8?q?=5Fwrite=5Fheaders=20uses=2025=20columns,=202?= =?UTF-8?q?=20rows,=20and=20"Doors"=20group=20label=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/magic_plan/tests/test_audit_script.py | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/backend/magic_plan/tests/test_audit_script.py b/backend/magic_plan/tests/test_audit_script.py index 5bf14596..8e966561 100644 --- a/backend/magic_plan/tests/test_audit_script.py +++ b/backend/magic_plan/tests/test_audit_script.py @@ -1,5 +1,6 @@ +import openpyxl from datatypes.magicplan.domain.models import Door, Floor, Plan, Room, Window -from backend.magic_plan.audit_script import AuditRow, _build_rows +from backend.magic_plan.audit_script import AuditRow, _build_rows, _write_headers def test_build_rows_opening_and_trickle_vent_fields_are_none() -> None: @@ -233,3 +234,29 @@ def test_build_rows_room_name_in_location_on_every_row() -> None: for row in data_rows: assert row.window_location == "Kitchen" assert row.door_location == "Kitchen" + + +def test_write_headers_two_rows_correct_labels_and_column_positions() -> None: + # Arrange + wb = openpyxl.Workbook() + ws = wb.active # type: ignore[assignment] + + # Act + _write_headers(ws) + + # Assert — group labels in row 1 at the new column positions + assert ws.cell(row=1, column=1).value == "Room" + assert ws.cell(row=1, column=6).value == "Window Area" + assert ws.cell(row=1, column=12).value == "Openings" + assert ws.cell(row=1, column=16).value == "Trickle Vents" + assert ws.cell(row=1, column=22).value == "Doors" + # Assert — "Door Undercuts" label no longer used + assert ws.cell(row=1, column=28).value is None + # Assert — only two header rows; row 3 is empty + assert ws.cell(row=3, column=1).value is None + assert ws.cell(row=3, column=13).value is None + # Assert — opening columns use self-describing labels (no "Opening 1" sub-header) + assert ws.cell(row=2, column=12).value == "No. of Openings" + assert ws.cell(row=2, column=13).value == "Opening Width m" + assert ws.cell(row=2, column=14).value == "Opening Height m" + assert ws.cell(row=2, column=15).value == "Total Area m²"