77 lines
2.9 KiB
Python
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)
|