47 lines
1.3 KiB
Python
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"
|