import pytest from openpyxl import Workbook from openpyxl.styles import Alignment import io from core.renderer import ExcelRenderer from PIL import Image @pytest.fixture def merged_cell_excel_bytes(): wb = Workbook() ws = wb.active ws.title = "MergedTest" # Merge A1:B2 ws.merge_cells('A1:B2') cell = ws['A1'] cell.value = "Merged Content" cell.alignment = Alignment(horizontal='center', vertical='center') # Add some other content ws['C1'] = "C1" ws['C2'] = "C2" ws['A3'] = "A3" out = io.BytesIO() wb.save(out) out.seek(0) return out.getvalue() def test_merged_cell_rendering(merged_cell_excel_bytes): """ Test that rendering an Excel file with merged cells does not raise an AttributeError. Specifically checking for 'MergedCell' object has no attribute 'column_letter'. """ renderer = ExcelRenderer(merged_cell_excel_bytes) try: img_bytes = renderer.render_to_bytes(sheet_name="MergedTest") except AttributeError as e: pytest.fail(f"Rendering failed with AttributeError: {e}") except Exception as e: pytest.fail(f"Rendering failed with unexpected error: {e}") assert isinstance(img_bytes, bytes) img = Image.open(io.BytesIO(img_bytes)) assert img.format == "PNG"