#!/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()