#!/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)