#!/usr/bin/env python3 """ Test script to verify that the private chat dropdown shows entity names instead of IDs """ import sys import os # Add the src directory to Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) def test_dropdown_display_names(): try: # Import required modules from src.core.game_engine import get_game_engine from src.facades.game_facade import GameFacade from src.ui.interface_manager import InterfaceManager from src.ui.huggingface_ui import HuggingFaceUI print("πŸ§ͺ Testing Private Chat Dropdown Display Names...") # Get game instances facade = GameFacade() ui = HuggingFaceUI(facade) interface_manager = InterfaceManager(facade, ui) # Add test players player1_id = facade.join_game('TestPlayer1') player2_id = facade.join_game('TestPlayer2') print(f"βœ… Created players:") print(f" - TestPlayer1: {player1_id}") print(f" - TestPlayer2: {player2_id}") # Move players close to each other (same position) facade.move_player(player1_id, "right") # Move to position (1, 0) facade.move_player(player2_id, "right") # Move to position (1, 0) print("πŸ“ Moved players to same position for proximity testing") # Test proximity info and dropdown choices proximity_html, choices, has_entities = interface_manager._get_proximity_info(player1_id) print(f"πŸ” Proximity detection result:") print(f" - Has nearby entities: {has_entities}") print(f" - Number of choices: {len(choices)}") print(f" - Choices: {choices}") # Verify that choices contain human-readable names, not IDs if has_entities and choices: print("\nβœ… Testing dropdown choices:") for choice in choices: print(f" - Choice: '{choice}'") # Check if it's a human-readable name (not a UUID-like ID) if choice == "TestPlayer2": print(f" βœ… Correctly shows human-readable name!") elif len(choice) == 36 and '-' in choice: # UUID format print(f" ❌ Still showing entity ID instead of name!") return False else: print(f" βœ… Shows name: {choice}") # Test the name-to-ID mapping print(f"\nπŸ—ΊοΈ Entity name-to-ID mapping:") for name, entity_id in interface_manager.entity_name_to_id.items(): print(f" - '{name}' -> {entity_id}") # Test chat tab creation with display name if choices: selected_name = choices[0] # Select first choice (should be a name) print(f"\nπŸ’¬ Testing chat tab creation with: '{selected_name}'") # Simulate starting a chat (this should work with display names now) chat_tabs_state = {} current_state = {"joined": True, "player_id": player1_id} result = interface_manager._handle_start_chat( selected_name, chat_tabs_state, current_state ) print(f"πŸ“‹ Chat tab creation result:") print(f" - Tab state: {chat_tabs_state}") # Verify that the tab was created with the correct entity ID if chat_tabs_state: for entity_id, tab_info in chat_tabs_state.items(): print(f" - Entity ID: {entity_id}") print(f" - Display name: {tab_info['name']}") if tab_info['name'] == selected_name: print(" βœ… Tab created successfully with correct name!") else: print(" ❌ Tab name mismatch!") return False print("\nβœ… All dropdown display name tests passed!") return True except Exception as e: print(f"❌ Test failed: {e}") import traceback traceback.print_exc() return False if __name__ == "__main__": success = test_dropdown_display_names() sys.exit(0 if success else 1)