119 lines
3.9 KiB
Markdown
119 lines
3.9 KiB
Markdown
# Étape 6 — Tests, soutenance et rendu école
|
||
|
||
> **Prérequis :** étapes 2–5 OK sur device (OAuth `public` + `projects`, recherche, profil, retour, layout).
|
||
|
||
## Objectif
|
||
|
||
1. Valider la **partie obligatoire** du sujet avant peer-eval.
|
||
2. Préparer le **dépôt Vogosphere** (sans `docs/`, sans `.env`).
|
||
3. Savoir **quoi montrer** à l’évaluateur et dans quel ordre.
|
||
|
||
Référence correcteurs : [swiftyCompanion/README.md](../../swiftyCompanion/README.md).
|
||
|
||
---
|
||
|
||
## Commandes avant soutenance
|
||
|
||
Depuis le package Flutter :
|
||
|
||
```bash
|
||
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) :
|
||
|
||
```bash
|
||
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](etape-07-bonus-token.md) |
|
||
|
||
**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.example`
|
||
- `swifty_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
|
||
|
||
```bash
|
||
cd ~/projets/42School/swifty_companion/swiftyCompanion
|
||
git status # si repo école initialisé ici
|
||
```
|
||
|
||
- Aucun `.env` listé
|
||
- `REDIRECT_URI` dans `.env.example` = URI enregistrée sur l’Intra
|
||
- README école à jour pour les correcteurs
|
||
|
||
Workflow détaillé : [README racine](../../README.md) (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 `.env` local, 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](etape-07-bonus-token.md) : refresh token à l’expiration (optionnel si obligatoire parfaite).
|