excel2pic/tests/test_merged_cells.py

47 lines
1.3 KiB
Python

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"