""" Final test of all CrossSwitch bug fixes Creates mapping with GSC PanLeft and G-Core PanRight Both actions should now appear correctly in GeViSet """ import requests import json import time API_BASE = "http://localhost:5000/api" def create_final_test_mapping(): """Create test mapping with all fixes applied""" mapping_data = { "mappingName": "FINAL_FIX_TEST", "outputActions": [ { "action": "PanLeft", "parameters": [ {"name": "Caption", "value": "GSC PanLeft"}, {"name": "GscServer", "value": "GEVISCOPE_01_UPDATED"}, {"name": "PTZ head", "value": "101027"} ] }, { "action": "PanRight", "parameters": [ {"name": "Caption", "value": "G-Core PanRight"}, {"name": "GCoreServer", "value": "gscope-cdu-10"}, {"name": "PTZ head", "value": "101027"} ] } ] } print("=" * 80) print("FINAL FIX TEST - Creating action mapping with ALL fixes applied") print("=" * 80) print() print(f"Mapping name: {mapping_data['mappingName']}") print(f"Output actions: {len(mapping_data['outputActions'])}") print() for i, action in enumerate(mapping_data['outputActions'], 1): print(f"Action {i}: {action['action']}") for param in action['parameters']: print(f" {param['name']}: {param['value']}") print() # Create mapping print("Sending to REST API...") response = requests.post( f"{API_BASE}/configuration/action-mappings", json=mapping_data, headers={"Content-Type": "application/json"} ) if response.status_code == 200: print("✓ SUCCESS - Mapping created!") print() print("FIXES APPLIED:") print("1. BuildActionString now includes Camera parameter for BOTH GSC and G-Core") print("2. Mapping-level VideoInput = 0 (camera is in action strings)") print("3. Only 2 filter flags: .Temp and .VideoInput (not .SwitchMode/.VideoOutput)") print("4. Action-specific @@ values from ActionIdLookup (PanLeft=4198/9294, PanRight=4198/9294)") print("5. READ code skips mapping-level fields in output actions") print() print("=" * 80) print("NEXT STEP: Open GeViSet and verify FINAL_FIX_TEST mapping") print("=" * 80) print() print("Expected in GeViSet:") print("- Mapping name: FINAL_FIX_TEST") print("- Output Action 1: 'GSC PanLeft' (should show as PanLeft, NOT CrossSwitch)") print("- Output Action 2: 'G-Core PanRight' (should show as PanRight, NOT CrossSwitch)") print() else: print(f"✗ FAILED - Status: {response.status_code}") print(f"Response: {response.text}") if __name__ == "__main__": create_final_test_mapping()