- Invoer van een 'constanten' cache op niveau van useTranslation.js, om in de ProgressTracker de boodschappen in de juiste taal te zetten.
193 lines
6.8 KiB
Python
193 lines
6.8 KiB
Python
#!/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()) |