- verbeteringen client
- Invoer van een 'constanten' cache op niveau van useTranslation.js, om in de ProgressTracker de boodschappen in de juiste taal te zetten.
This commit is contained in:
193
test_translation_implementation.py
Normal file
193
test_translation_implementation.py
Normal file
@@ -0,0 +1,193 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify the translation implementation in eveai_chat_client.
|
||||
|
||||
This script checks:
|
||||
1. ProgressTracker.vue has proper translation setup
|
||||
2. MessageHistory.vue has correct historical message exclusion logic
|
||||
3. Translation composable is properly imported
|
||||
4. Caching mechanism is implemented
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
def check_file_exists(filepath):
|
||||
"""Check if file exists and return True/False"""
|
||||
return os.path.exists(filepath)
|
||||
|
||||
def read_file_content(filepath):
|
||||
"""Read file content safely"""
|
||||
try:
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
return f.read()
|
||||
except Exception as e:
|
||||
print(f"Error reading {filepath}: {e}")
|
||||
return None
|
||||
|
||||
def test_progress_tracker_implementation():
|
||||
"""Test ProgressTracker.vue implementation"""
|
||||
print("🔍 Testing ProgressTracker.vue implementation...")
|
||||
|
||||
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/ProgressTracker.vue"
|
||||
|
||||
if not check_file_exists(filepath):
|
||||
print("❌ ProgressTracker.vue not found")
|
||||
return False
|
||||
|
||||
content = read_file_content(filepath)
|
||||
if not content:
|
||||
return False
|
||||
|
||||
checks = [
|
||||
("Translation composable import", r"import.*useTranslationClient.*from.*useTranslation"),
|
||||
("Cache object", r"const statusTextCache = \{\}"),
|
||||
("Translated status texts data", r"translatedStatusTexts:\s*\{"),
|
||||
("Error text computed property", r"errorText\(\)\s*\{"),
|
||||
("Completed text computed property", r"completedText\(\)\s*\{"),
|
||||
("Processing text computed property", r"processingText\(\)\s*\{"),
|
||||
("Template uses computed properties", r"\{\{\s*errorText\s*\}\}"),
|
||||
("Language change handler", r"handleLanguageChange\(newLanguage\)"),
|
||||
("Cache check logic", r"if \(statusTextCache\[newLanguage\]\)"),
|
||||
("Backend translation calls", r"await this\.translateSafe"),
|
||||
("Event listener setup", r"document\.addEventListener\('language-changed'"),
|
||||
("Event listener cleanup", r"document\.removeEventListener\('language-changed'")
|
||||
]
|
||||
|
||||
passed = 0
|
||||
for check_name, pattern in checks:
|
||||
if re.search(pattern, content, re.MULTILINE | re.DOTALL):
|
||||
print(f" ✅ {check_name}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f" ❌ {check_name}")
|
||||
|
||||
print(f"ProgressTracker.vue: {passed}/{len(checks)} checks passed")
|
||||
return passed == len(checks)
|
||||
|
||||
def test_message_history_implementation():
|
||||
"""Test MessageHistory.vue implementation"""
|
||||
print("\n🔍 Testing MessageHistory.vue implementation...")
|
||||
|
||||
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/MessageHistory.vue"
|
||||
|
||||
if not check_file_exists(filepath):
|
||||
print("❌ MessageHistory.vue not found")
|
||||
return False
|
||||
|
||||
content = read_file_content(filepath)
|
||||
if not content:
|
||||
return False
|
||||
|
||||
checks = [
|
||||
("Translation composable import", r"import.*useTranslationClient.*from.*useTranslation"),
|
||||
("Setup function with translateSafe", r"setup\(\)\s*\{.*translateSafe.*\}"),
|
||||
("Historical message exclusion", r"if \(this\.messages\.length === 1.*sender === 'ai'\)"),
|
||||
("Original content check", r"if \(firstMessage\.originalContent\)"),
|
||||
("Translation with fallback", r"fallbackText:\s*firstMessage\.originalContent"),
|
||||
("Event listener setup", r"document\.addEventListener\('language-changed'"),
|
||||
("Event listener cleanup", r"document\.removeEventListener\('language-changed'")
|
||||
]
|
||||
|
||||
passed = 0
|
||||
for check_name, pattern in checks:
|
||||
if re.search(pattern, content, re.MULTILINE | re.DOTALL):
|
||||
print(f" ✅ {check_name}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f" ❌ {check_name}")
|
||||
|
||||
print(f"MessageHistory.vue: {passed}/{len(checks)} checks passed")
|
||||
return passed == len(checks)
|
||||
|
||||
def test_chat_message_original_content():
|
||||
"""Test ChatMessage.vue original content storage"""
|
||||
print("\n🔍 Testing ChatMessage.vue original content storage...")
|
||||
|
||||
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/ChatMessage.vue"
|
||||
|
||||
if not check_file_exists(filepath):
|
||||
print("❌ ChatMessage.vue not found")
|
||||
return False
|
||||
|
||||
content = read_file_content(filepath)
|
||||
if not content:
|
||||
return False
|
||||
|
||||
checks = [
|
||||
("Original content storage", r"this\.message\.originalContent = this\.message\.content"),
|
||||
("AI message check", r"this\.message\.sender === 'ai'"),
|
||||
("Original content condition", r"!this\.message\.originalContent")
|
||||
]
|
||||
|
||||
passed = 0
|
||||
for check_name, pattern in checks:
|
||||
if re.search(pattern, content, re.MULTILINE):
|
||||
print(f" ✅ {check_name}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f" ❌ {check_name}")
|
||||
|
||||
print(f"ChatMessage.vue: {passed}/{len(checks)} checks passed")
|
||||
return passed == len(checks)
|
||||
|
||||
def test_translation_composable():
|
||||
"""Test translation composable exists"""
|
||||
print("\n🔍 Testing translation composable...")
|
||||
|
||||
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/js/composables/useTranslation.js"
|
||||
|
||||
if not check_file_exists(filepath):
|
||||
print("❌ useTranslation.js not found")
|
||||
return False
|
||||
|
||||
content = read_file_content(filepath)
|
||||
if not content:
|
||||
return False
|
||||
|
||||
checks = [
|
||||
("useTranslationClient export", r"export function useTranslationClient"),
|
||||
("translateSafe function", r"const translateSafe = async"),
|
||||
("Backend API call", r"await translate\("),
|
||||
("Fallback handling", r"fallbackText")
|
||||
]
|
||||
|
||||
passed = 0
|
||||
for check_name, pattern in checks:
|
||||
if re.search(pattern, content, re.MULTILINE):
|
||||
print(f" ✅ {check_name}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f" ❌ {check_name}")
|
||||
|
||||
print(f"useTranslation.js: {passed}/{len(checks)} checks passed")
|
||||
return passed == len(checks)
|
||||
|
||||
def main():
|
||||
"""Run all tests"""
|
||||
print("🚀 Starting translation implementation tests...\n")
|
||||
|
||||
tests = [
|
||||
test_progress_tracker_implementation,
|
||||
test_message_history_implementation,
|
||||
test_chat_message_original_content,
|
||||
test_translation_composable
|
||||
]
|
||||
|
||||
results = []
|
||||
for test in tests:
|
||||
results.append(test())
|
||||
|
||||
print(f"\n📊 Test Results:")
|
||||
print(f"Passed: {sum(results)}/{len(results)} tests")
|
||||
|
||||
if all(results):
|
||||
print("🎉 All tests passed! Translation implementation is complete.")
|
||||
return 0
|
||||
else:
|
||||
print("❌ Some tests failed. Please review the implementation.")
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user