Files
notytex/tests/test_grading_validation.py
2025-08-05 21:23:49 +02:00

106 lines
4.6 KiB
Python

#!/usr/bin/env python3
"""
Test final pour valider que le système de configuration des échelles
fonctionne correctement de bout en bout.
"""
from app import create_app
from app_config import config_manager
def test_final_validation():
"""Test final de validation du système."""
app = create_app('development')
with app.app_context():
print("=== VALIDATION FINALE : Système de configuration des échelles ===\n")
# 1. Test des modifications via l'interface de configuration
print("1. Test des modifications via config_manager:")
# Modifier le label de la valeur '1'
success = config_manager.update_scale_value('1', 'EN APPRENTISSAGE', '#ff9900', True)
print(f" Modification '1''EN APPRENTISSAGE': {success}")
# Vérifier que la modification est persistée
updated_values = config_manager.get_competence_scale_values()
print(f" Nouveau label pour '1': '{updated_values['1']['label']}'")
print(f" Nouvelle couleur pour '1': '{updated_values['1']['color']}'")
# 2. Test d'affichage dynamique
print("\n2. Test d'affichage dynamique:")
display_info = config_manager.get_display_info('1', 'score')
print(f" get_display_info('1', 'score'): {display_info}")
# 3. Test avec l'interface de notation
print("\n3. Test d'intégration avec l'interface de notation:")
with app.test_client() as client:
# Accéder à une page de notation
response = client.get('/assessments/1/grading')
if response.status_code == 200:
content = response.get_data(as_text=True)
# Vérifier que les labels modifiés apparaissent
if 'EN APPRENTISSAGE' in content:
print(" ✅ Label 'EN APPRENTISSAGE' trouvé dans l'interface de notation")
else:
print(" ❌ Label 'EN APPRENTISSAGE' non trouvé dans l'interface")
if 'SUPER ACQUIS' in content:
print(" ✅ Label 'SUPER ACQUIS' trouvé dans l'interface de notation")
else:
print(" ❌ Label 'SUPER ACQUIS' non trouvé dans l'interface")
else:
print(f" ❌ Erreur d'accès à l'interface de notation: {response.status_code}")
# 4. Test de la page de configuration
print("\n4. Test de la page de configuration:")
with app.test_client() as client:
response = client.get('/config/scale')
if response.status_code == 200:
content = response.get_data(as_text=True)
if 'EN APPRENTISSAGE' in content:
print(" ✅ Label 'EN APPRENTISSAGE' trouvé dans la page de configuration")
else:
print(" ❌ Label 'EN APPRENTISSAGE' non trouvé dans la page de configuration")
else:
print(f" ❌ Erreur d'accès à la page de configuration: {response.status_code}")
# 5. Test de cohérence finale
print("\n5. Test de cohérence finale:")
all_consistent = True
scale_values = config_manager.get_competence_scale_values()
for value in ['0', '1', '2', '3']:
if value in scale_values:
db_label = scale_values[value]['label']
display_info = config_manager.get_display_info(value, 'score')
display_label = display_info['label']
if db_label == display_label:
print(f" ✅ Cohérence pour '{value}': '{db_label}'")
else:
print(f" ❌ Incohérence pour '{value}': DB='{db_label}' vs Display='{display_label}'")
all_consistent = False
# 6. Résultat final
print("\n6. RÉSULTAT FINAL:")
if all_consistent:
print(" 🎉 SUCCÈS : Le système de configuration des échelles fonctionne parfaitement !")
print(" 📋 Les modifications apportées dans la page config/scale sont maintenant")
print(" correctement prises en compte dans toute l'application.")
print(" ✅ Problème de synchronisation des labels : RÉSOLU")
else:
print(" ⚠️ Certaines incohérences subsistent")
print("\n=== Fin de la validation ===")
if __name__ == '__main__':
test_final_validation()