#!/usr/bin/env python3 """ Test script to validate the Sidebar LanguageProvider fix Tests that both SideBar and ChatApp have access to LanguageProvider """ import os import sys import subprocess import time from pathlib import Path # Add project root to path project_root = Path(__file__).parent sys.path.append(str(project_root)) def test_file_contains(file_path, search_terms, description): """Test if a file contains specific terms""" full_path = project_root / file_path if not full_path.exists(): print(f"โŒ FAIL - {description}: File not found - {file_path}") return False try: content = full_path.read_text(encoding='utf-8') all_found = all(term in content for term in search_terms) status = "โœ… PASS" if all_found else "โŒ FAIL" print(f"{status} - {description}") if not all_found: missing = [term for term in search_terms if term not in content] print(f" Missing terms: {missing}") return all_found except Exception as e: print(f"โŒ FAIL - {description}: Error reading file - {e}") return False def run_tests(): """Run all tests for the Sidebar LanguageProvider fix""" print("๐Ÿงช Testing Sidebar LanguageProvider Fix") print("=" * 50) tests_passed = 0 total_tests = 0 # Test 1: chat-client.js imports LanguageProvider total_tests += 1 if test_file_contains("nginx/frontend_src/js/chat-client.js", ["import { createLanguageProvider, LANGUAGE_PROVIDER_KEY }"], "chat-client.js imports LanguageProvider"): tests_passed += 1 # Test 2: initializeSidebar creates and provides LanguageProvider total_tests += 1 if test_file_contains("nginx/frontend_src/js/chat-client.js", ["createLanguageProvider(initialLanguage, apiPrefix)", "app.provide(LANGUAGE_PROVIDER_KEY, languageProvider)"], "initializeSidebar creates and provides LanguageProvider"): tests_passed += 1 # Test 3: SideBar app listens to language-changed events total_tests += 1 if test_file_contains("nginx/frontend_src/js/chat-client.js", ["languageChangeHandler", "document.addEventListener('language-changed'", "languageProvider.setLanguage"], "SideBar app listens to language-changed events"): tests_passed += 1 # Test 4: SideBarExplanation uses useComponentTranslations total_tests += 1 if test_file_contains("eveai_chat_client/static/assets/vue-components/SideBarExplanation.vue", ["useComponentTranslations", "sidebar_explanation"], "SideBarExplanation uses useComponentTranslations"): tests_passed += 1 # Test 5: ChatApp still provides LanguageProvider total_tests += 1 if test_file_contains("eveai_chat_client/static/assets/vue-components/ChatApp.vue", ["createLanguageProvider", "provide(LANGUAGE_PROVIDER_KEY"], "ChatApp still provides LanguageProvider"): tests_passed += 1 print("\n" + "=" * 50) print(f"๐Ÿงช Test Results: {tests_passed}/{total_tests} tests passed") if tests_passed == total_tests: print("๐ŸŽ‰ All tests passed! Sidebar LanguageProvider fix looks good.") print("\nโœ… Expected fixes:") print(" - SideBarExplanation should no longer throw 'useLanguageProvider must be used within a LanguageProvider' error") print(" - Sidebar explanation text should be visible and translatable") print(" - Both sidebar and chat translations should work correctly") return True else: print(f"โš ๏ธ {total_tests - tests_passed} tests failed. Please review the implementation.") return False def check_potential_issues(): """Check for potential issues with the implementation""" print("\n๐Ÿ” Checking for Potential Issues") print("=" * 50) issues_found = 0 # Check if both apps create separate LanguageProvider instances chat_client_path = project_root / "nginx/frontend_src/js/chat-client.js" if chat_client_path.exists(): content = chat_client_path.read_text(encoding='utf-8') provider_creations = content.count('createLanguageProvider(') if provider_creations >= 1: print(f"โœ… Found {provider_creations} LanguageProvider creation(s) in chat-client.js") else: print("โš ๏ธ No LanguageProvider creation found in chat-client.js") issues_found += 1 # Check if ChatApp also creates LanguageProvider chatapp_path = project_root / "eveai_chat_client/static/assets/vue-components/ChatApp.vue" if chatapp_path.exists(): content = chatapp_path.read_text(encoding='utf-8') if 'createLanguageProvider(' in content: print("โœ… ChatApp creates LanguageProvider") else: print("โš ๏ธ ChatApp doesn't create LanguageProvider") issues_found += 1 if issues_found == 0: print("โœ… No potential issues detected") else: print(f"โš ๏ธ {issues_found} potential issue(s) detected") return issues_found == 0 if __name__ == "__main__": print("๐Ÿš€ Sidebar LanguageProvider Fix Test Suite") print("Testing fix for 'useLanguageProvider must be used within a LanguageProvider' error") print("=" * 70) # Run tests success = run_tests() # Check for potential issues no_issues = check_potential_issues() if success and no_issues: print("\nโœ… Implementation validation successful!") print("The sidebar should now have access to LanguageProvider and translations should work.") sys.exit(0) else: print("\nโŒ Implementation validation failed!") print("Please review and fix the issues before testing in browser.") sys.exit(1)