Merge pull request 'AURORA-1902: возврат тестирования — цветные заливки на листах Операц/АХР/КВ выгрузки Сметы РФ' (#310) from feat/309-aurora-1902-export-colors into test
This commit is contained in:
commit
5a91f35ab2
@ -413,6 +413,10 @@ class XlsxDepthSheetWriter(AbstractWriter):
|
|||||||
color = self.colors_config.get(full_key)
|
color = self.colors_config.get(full_key)
|
||||||
if color and "palette" in color:
|
if color and "palette" in color:
|
||||||
self.palette[key] = color["palette"]
|
self.palette[key] = color["palette"]
|
||||||
|
# AURORA-1902: цвета Сметы РФ (FORM2_COLORS) ключуются путём данных
|
||||||
|
# (header.section_code, plan.q1), а не путём ключей дерева колонок.
|
||||||
|
if key not in self.palette and (color := self.colors_config.get(key)) and "palette" in color:
|
||||||
|
self.palette[key] = color["palette"]
|
||||||
|
|
||||||
def _get_header_max_row(self, column_dict: dict) -> int:
|
def _get_header_max_row(self, column_dict: dict) -> int:
|
||||||
max_depth = 0
|
max_depth = 0
|
||||||
|
|||||||
@ -200,3 +200,42 @@ async def test_resolve_form2_vsp_numbers_skips_db_call_when_no_vsp_ids():
|
|||||||
await service._resolve_form2_vsp_numbers(rows)
|
await service._resolve_form2_vsp_numbers(rows)
|
||||||
|
|
||||||
service.vsp_repo.get_reg_numbers_by_ids.assert_not_awaited()
|
service.vsp_repo.get_reg_numbers_by_ids.assert_not_awaited()
|
||||||
|
|
||||||
|
|
||||||
|
# AURORA-1902, возврат 10.11: FORM2_COLORS ключуется путём данных (header.section_code, plan.q1),
|
||||||
|
# а writer искал цвет только по пути ключей дерева колонок — заливок на листах не было.
|
||||||
|
@pytest.mark.parametrize("sheet", ["OPER", "AHR", "CAP"])
|
||||||
|
def test_form2_writer_applies_sheet_palette_to_every_column(sheet):
|
||||||
|
service = ExportService(AsyncMock())
|
||||||
|
writer = service._create_xlsxwriter_sheet_writers(XlsxWorkbook(), FormTypeEnum.FORM_2.value, 2026)[sheet]
|
||||||
|
|
||||||
|
assert set(writer.palette) == set(writer.columns)
|
||||||
|
for key in writer.columns:
|
||||||
|
assert writer.palette[key] == FORM2_COLORS[sheet][key]["palette"], key
|
||||||
|
|
||||||
|
|
||||||
|
def test_form1_writer_palette_is_unaffected():
|
||||||
|
service = ExportService(AsyncMock())
|
||||||
|
writer = service._create_xlsxwriter_sheet_writers(XlsxWorkbook(), FormTypeEnum.FORM_1.value, 2026)["OPER"]
|
||||||
|
|
||||||
|
assert len(writer.palette) == len(writer.columns) - 1
|
||||||
|
assert writer.palette["section"] == "blue"
|
||||||
|
|
||||||
|
|
||||||
|
def test_form2_export_fills_group_row_with_sheet_colors(tmp_path):
|
||||||
|
from openpyxl import load_workbook
|
||||||
|
|
||||||
|
path = tmp_path / "form2.xlsx"
|
||||||
|
workbook = XlsxWorkbook(str(path))
|
||||||
|
service = ExportService(AsyncMock())
|
||||||
|
writer = service._create_xlsxwriter_sheet_writers(workbook, FormTypeEnum.FORM_2.value, 2026)["OPER"]
|
||||||
|
worksheet = workbook.add_worksheet("OPER")
|
||||||
|
writer.write(worksheet, [("GROUP", 1, 1, {"header": {"name": "Группа"}, "plan": {"q1": 10}})])
|
||||||
|
workbook.close()
|
||||||
|
|
||||||
|
sheet = load_workbook(path).active
|
||||||
|
plan_q1_column = writer.columns.index("plan.q1") + 1
|
||||||
|
group_row = sheet.max_row
|
||||||
|
fill = sheet.cell(row=group_row, column=plan_q1_column).fill
|
||||||
|
assert fill.fill_type == "solid"
|
||||||
|
assert fill.fgColor.rgb not in (None, "00000000", "FFFFFFFF")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user