3.9 KiB
Étape 6 — Tests, soutenance et rendu école
Prérequis : étapes 2–5 OK sur device (OAuth
public+projects, recherche, profil, retour, layout).
Objectif
- Valider la partie obligatoire du sujet avant peer-eval.
- Préparer le dépôt Vogosphere (sans
docs/, sans.env). - Savoir quoi montrer à l’évaluateur et dans quel ordre.
Référence correcteurs : swiftyCompanion/README.md.
Commandes avant soutenance
Depuis le package Flutter :
cd ~/projets/42School/swifty_companion/swiftyCompanion/swifty_companion
flutter pub get
flutter analyze
flutter test
flutter doctor
Sur téléphone (USB ou Wi‑Fi ADB) :
flutter devices
flutter run -d <device>
Après changement de .env ou de scopes OAuth : arrêter flutter run et relancer ; reconnexion 42 dans l’app.
Checklist peer-eval (détaillée)
| # | Test | Comment le montrer | Où c’est géré dans l’app |
|---|---|---|---|
| 1 | flutter test |
Terminal sur la machine de dev | test/widget_test.dart |
| 2 | Parcours nominal | Connexion → login valide → profil | SearchScreen → ProfileScreen |
| 3 | Profil complet | Photo, ≥ 4 champs, skills (niveau + %), projets validés et failed | IntraProfileService + profile_screen.dart |
| 4 | Login invalide | zzzzinvalid → message, pas de crash |
IntraUserNotFoundException |
| 5 | Hors ligne | Mode avion sur recherche ou sur profil (erreur + réessai) | IntraNetworkException, retry profil |
| 6 | Navigation | Retour AppBar → nouvelle recherche, session conservée | Navigator.pop |
| 7 | Petit écran / rotation | Paysage, clavier ouvert sur la recherche | ResponsiveScrollBody, swifty_ui.dart |
| 8 | Bonus | Access invalide → refresh → recherche OK | étape 7 |
Ordre de démo suggéré : connexion → profil riche (skills + failed) → login faux → mode avion → retour → flutter test.
Correspondance sujet v4 ↔ app
| Critère sujet | Statut attendu |
|---|---|
| 2 vues | SearchScreen + ProfileScreen |
| Erreurs | Login vide, inconnu, réseau, 401, 403, 429 |
| Token unique | IntraAuthService.instance partout |
| OAuth Intra | flutter_appauth + .env |
| Layout adaptatif | Étape 5 (wideBreakpoint 720 px) |
Champs masqués par l’API (—) : normal (confidentialité sujet).
Rendu Git école
Ce qui part sur Vogosphere
Racine du dépôt Intra = contenu de swiftyCompanion/ :
README.md,.gitignore,.env.exampleswifty_companion/(code Flutter)
Ce qui ne part pas
docs/(dépôt perso uniquement).env(secrets)- Fichiers de backup type
.env copy
Vérifier avant push
cd ~/projets/42School/swifty_companion/swiftyCompanion
git status # si repo école initialisé ici
- Aucun
.envlisté REDIRECT_URIdans.env.example= URI enregistrée sur l’Intra- README école à jour pour les correcteurs
Workflow détaillé : README racine (section « Pousser vers l’école »).
Parler en soutenance (30 s)
« Swifty Companion : OAuth2 Intra une fois, puis recherche par login. Le profil charge cursus, skills et projects_users avec le même token. Erreurs réseau et API gérées ; layout scrollable et deux colonnes sur grand écran. Secrets dans
.envlocal, non versionné. »
Critères « étape 6 terminée »
| # | Fait ? |
|---|---|
| 1 | flutter analyze + flutter test verts |
| 2 | Checklist peer-eval cochée sur device |
| 3 | .env absent du futur commit école |
| 4 | Tu sais lancer la démo sans notes |
Ensuite — étape 7 (bonus)
→ etape-07-bonus-token.md : refresh token à l’expiration (optionnel si obligatoire parfaite).