gateway/test_excel_fix.py
2025-09-12 19:38:13 +02:00

77 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Test script to verify the Excel header parsing fix
"""
import sys
import os
import pandas as pd
from io import BytesIO
# Add the gateway modules to the path
sys.path.append(os.path.join(os.path.dirname(__file__), 'modules'))
from modules.interfaces.interfaceTicketObjects import TicketSharepointSyncInterface
def test_excel_header_parsing():
"""Test the Excel header parsing fix"""
print("=== Testing Excel Header Parsing Fix ===\n")
# Create a mock interface instance
interface = TicketSharepointSyncInterface(
connector_ticket=None,
connector_sharepoint=None,
task_sync_definition={
"ID": ["get", ["id"]],
"Summary": ["get", ["fields", "summary"]],
"Status": ["get", ["fields", "status", "name"]],
"Assignee": ["put", ["fields", "assignee", "displayName"]]
},
sync_folder="test",
sync_file="test.xlsx",
backup_folder="backup",
audit_folder="audit",
site_id="test"
)
# Test data
test_data = [
{"ID": "TEST-1", "Summary": "Test Issue 1", "Status": "Open", "Assignee": "John Doe"},
{"ID": "TEST-2", "Summary": "Test Issue 2", "Status": "Closed", "Assignee": "Jane Smith"},
]
# Create Excel content
print("1. Creating Excel content...")
excel_content = interface._create_excel_content(test_data)
print(f" ✓ Created Excel content: {len(excel_content)} bytes")
# Parse it back
print("2. Parsing Excel content...")
try:
parsed_data, parsed_headers = interface._parse_excel_content(excel_content)
print(f" ✓ Parsed Excel content: {len(parsed_data)} records")
print(f" ✓ Headers type: header1={type(parsed_headers['header1'])}, header2={type(parsed_headers['header2'])}")
print(f" ✓ Headers content: header1='{parsed_headers['header1']}', header2='{parsed_headers['header2']}'")
# Test creating content with the parsed headers
print("3. Testing round-trip with parsed headers...")
new_excel_content = interface._create_excel_content(test_data, parsed_headers)
print(f" ✓ Created new Excel content: {len(new_excel_content)} bytes")
# Parse the new content
final_data, final_headers = interface._parse_excel_content(new_excel_content)
print(f" ✓ Final parse successful: {len(final_data)} records")
print(f" ✓ Final headers: header1='{final_headers['header1']}', header2='{final_headers['header2']}'")
print("\n✅ All tests passed! The header parsing fix works correctly.")
return True
except Exception as e:
print(f" ✗ Error during parsing: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
success = test_excel_header_parsing()
exit(0 if success else 1)