- verbeteringen client
- Enkel nog probleem met vertaling van de ProgressTracker constanten
This commit is contained in:
244
test_english_base_language_implementation.py
Normal file
244
test_english_base_language_implementation.py
Normal file
@@ -0,0 +1,244 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to validate the English base language implementation
|
||||
Tests component-specific translations and initial language checks
|
||||
"""
|
||||
|
||||
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 test_file_not_contains(file_path, search_terms, description):
|
||||
"""Test if a file does NOT contain 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')
|
||||
none_found = not any(term in content for term in search_terms)
|
||||
status = "✅ PASS" if none_found else "❌ FAIL"
|
||||
print(f"{status} - {description}")
|
||||
|
||||
if not none_found:
|
||||
found = [term for term in search_terms if term in content]
|
||||
print(f" Found unwanted terms: {found}")
|
||||
|
||||
return none_found
|
||||
except Exception as e:
|
||||
print(f"❌ FAIL - {description}: Error reading file - {e}")
|
||||
return False
|
||||
|
||||
def run_tests():
|
||||
"""Run all tests for the English base language implementation"""
|
||||
print("🧪 Testing English Base Language Implementation")
|
||||
print("=" * 60)
|
||||
|
||||
tests_passed = 0
|
||||
total_tests = 0
|
||||
|
||||
# Test 1: LanguageProvider uses English as default
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/js/services/LanguageProvider.js",
|
||||
["initialLanguage = 'en'", "Central language management system"],
|
||||
"LanguageProvider uses English as default language"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 2: LanguageProvider has component-specific translation function
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/js/services/LanguageProvider.js",
|
||||
["translateComponentTexts", "component-specific", "targetLanguage === 'en'"],
|
||||
"LanguageProvider has component-specific translation logic"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 3: LanguageProvider forces initial translation for non-English languages
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/js/services/LanguageProvider.js",
|
||||
["currentLanguage.value !== 'en'", "needs initial translation", "translateComponentTexts(componentName, currentLanguage.value)"],
|
||||
"LanguageProvider forces initial translation for non-English languages"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 4: ProgressTracker uses English original texts
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/vue-components/ProgressTracker.vue",
|
||||
["Error while processing", "Processing completed", "Processing..."],
|
||||
"ProgressTracker uses English original texts"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 5: ProgressTracker does NOT use Dutch texts
|
||||
total_tests += 1
|
||||
if test_file_not_contains("eveai_chat_client/static/assets/vue-components/ProgressTracker.vue",
|
||||
["Fout bij verwerking", "Verwerking voltooid", "Bezig met redeneren"],
|
||||
"ProgressTracker does not use Dutch texts"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 6: ChatMessage uses English original texts
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/vue-components/ChatMessage.vue",
|
||||
["Try again", "Copy", "Timestamp", "An error occurred while processing"],
|
||||
"ChatMessage uses English original texts"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 7: ChatMessage does NOT use Dutch texts
|
||||
total_tests += 1
|
||||
if test_file_not_contains("eveai_chat_client/static/assets/vue-components/ChatMessage.vue",
|
||||
["Opnieuw proberen", "Kopiëren", "Tijdstempel", "Er is een fout opgetreden"],
|
||||
"ChatMessage does not use Dutch texts"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 8: SideBarExplanation uses English as default language
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/vue-components/SideBarExplanation.vue",
|
||||
["default: 'en'", "Translating..."],
|
||||
"SideBarExplanation uses English as default language"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 9: LanguageProvider handles English base language correctly
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/js/services/LanguageProvider.js",
|
||||
["For English, use original texts", "no translation needed", "Start with original English texts"],
|
||||
"LanguageProvider handles English base language correctly"):
|
||||
tests_passed += 1
|
||||
|
||||
# Test 10: LanguageProvider has proper logging for debugging
|
||||
total_tests += 1
|
||||
if test_file_contains("eveai_chat_client/static/assets/js/services/LanguageProvider.js",
|
||||
["console.log", "Registering component", "needs initial translation", "Successfully translated"],
|
||||
"LanguageProvider has proper logging for debugging"):
|
||||
tests_passed += 1
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print(f"🧪 Test Results: {tests_passed}/{total_tests} tests passed")
|
||||
|
||||
if tests_passed == total_tests:
|
||||
print("🎉 All tests passed! English base language implementation looks good.")
|
||||
print("\n✅ Key improvements implemented:")
|
||||
print(" - English is now the base language for all components")
|
||||
print(" - Component-specific caching prevents cross-contamination")
|
||||
print(" - Initial language translation works at component registration")
|
||||
print(" - No fallback to Dutch - English is the source language")
|
||||
print(" - Proper logging for debugging translation issues")
|
||||
return True
|
||||
else:
|
||||
print(f"⚠️ {total_tests - tests_passed} tests failed. Please review the implementation.")
|
||||
return False
|
||||
|
||||
def check_cache_logic():
|
||||
"""Check the cache logic implementation"""
|
||||
print("\n🔍 Checking Cache Logic Implementation")
|
||||
print("=" * 50)
|
||||
|
||||
issues_found = 0
|
||||
|
||||
# Check if global cache is still being used incorrectly
|
||||
language_provider_path = project_root / "eveai_chat_client/static/assets/js/services/LanguageProvider.js"
|
||||
if language_provider_path.exists():
|
||||
content = language_provider_path.read_text(encoding='utf-8')
|
||||
|
||||
# Check for component-specific cache
|
||||
if 'componentTranslations[componentName]' in content:
|
||||
print("✅ Component-specific cache implementation found")
|
||||
else:
|
||||
print("⚠️ Component-specific cache not properly implemented")
|
||||
issues_found += 1
|
||||
|
||||
# Check for proper English base language handling
|
||||
if "targetLanguage === 'en'" in content:
|
||||
print("✅ English base language handling found")
|
||||
else:
|
||||
print("⚠️ English base language handling not found")
|
||||
issues_found += 1
|
||||
|
||||
# Check for initial translation logic
|
||||
if "needs initial translation" in content:
|
||||
print("✅ Initial translation logic found")
|
||||
else:
|
||||
print("⚠️ Initial translation logic not found")
|
||||
issues_found += 1
|
||||
|
||||
if issues_found == 0:
|
||||
print("✅ Cache logic implementation looks good")
|
||||
else:
|
||||
print(f"⚠️ {issues_found} issue(s) found in cache logic")
|
||||
|
||||
return issues_found == 0
|
||||
|
||||
def check_startup_behavior():
|
||||
"""Check startup behavior for different language scenarios"""
|
||||
print("\n🔍 Checking Startup Behavior")
|
||||
print("=" * 50)
|
||||
|
||||
print("📋 Expected startup behavior:")
|
||||
print(" 1. App starts with chatConfig.language (e.g., 'nl', 'fr', 'de')")
|
||||
print(" 2. Components register with English original texts")
|
||||
print(" 3. If initial language ≠ 'en', automatic translation is triggered")
|
||||
print(" 4. Cache is populated with correct translations for initial language")
|
||||
print(" 5. No fallback to Dutch - English is always the source")
|
||||
|
||||
# Check chat.html for language configuration
|
||||
chat_html_path = project_root / "eveai_chat_client/templates/chat.html"
|
||||
if chat_html_path.exists():
|
||||
content = chat_html_path.read_text(encoding='utf-8')
|
||||
if "language: '{{ session.magic_link.specialist_args.language|default(" in content:
|
||||
print("✅ Dynamic language configuration found in chat.html")
|
||||
if '|default("nl")' in content:
|
||||
print("⚠️ Default language in chat.html is still 'nl' - consider changing to 'en'")
|
||||
elif '|default("en")' in content:
|
||||
print("✅ Default language in chat.html is 'en'")
|
||||
else:
|
||||
print("⚠️ Language configuration not found in chat.html")
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🚀 English Base Language Implementation Test Suite")
|
||||
print("Testing component-specific translations with English as base language")
|
||||
print("=" * 70)
|
||||
|
||||
# Run main tests
|
||||
success = run_tests()
|
||||
|
||||
# Check cache logic
|
||||
cache_ok = check_cache_logic()
|
||||
|
||||
# Check startup behavior
|
||||
startup_ok = check_startup_behavior()
|
||||
|
||||
if success and cache_ok and startup_ok:
|
||||
print("\n✅ Implementation validation successful!")
|
||||
print("🎯 The system now uses English as the base language with proper component-specific caching.")
|
||||
print("🔧 Initial language translation should work correctly at startup.")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("\n❌ Implementation validation failed!")
|
||||
print("Please review and fix the issues before testing in browser.")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user