reconstruit le tableau de bord du prof dans le style de /cockpit, avec les vraies données (chantier vrai cockpit, étape 1)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
78030de488
commit
0573894721
6 changed files with 302 additions and 41 deletions
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Models\Classe;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
|
|
@ -33,7 +34,7 @@ test('la page de connexion affiche le formulaire prof et élève', function () {
|
|||
});
|
||||
|
||||
test('un prof connecté voit "Mes classes" dans le menu produit, pas la démo "Tableau de bord prof"', function () {
|
||||
$classe = \App\Models\Classe::factory()->create();
|
||||
$classe = Classe::factory()->create();
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.index'))
|
||||
->assertSee('Mes classes')
|
||||
|
|
|
|||
59
portail/tests/Feature/TableauDeBordProfTest.php
Normal file
59
portail/tests/Feature/TableauDeBordProfTest.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
use App\Models\Classe;
|
||||
use App\Models\Correction;
|
||||
use App\Models\Eleve;
|
||||
use App\Models\Lab;
|
||||
use App\Models\LabSession;
|
||||
use App\Models\Seance;
|
||||
|
||||
test('le tableau de bord d’une classe vide affiche les cartes réelles, sans aucune donnée inventée', function () {
|
||||
$classe = Classe::factory()->create(['nom' => 'Classe A']);
|
||||
$autre = Classe::factory()->create(['user_id' => $classe->user_id, 'nom' => 'Classe B']);
|
||||
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.show', $classe))
|
||||
->assertOk()
|
||||
->assertSee('Classe A')
|
||||
->assertSee('Classe B') // le sélecteur de classe liste bien les deux
|
||||
->assertSee('0', false) // Élèves : 0
|
||||
->assertDontSee('Mains levées')
|
||||
->assertDontSee('Dans la séance');
|
||||
});
|
||||
|
||||
test('une séance en cours montre les vrais élèves, leur état et leur dernière correction', function () {
|
||||
$classe = Classe::factory()->create();
|
||||
$lab = Lab::factory()->create(['titre' => 'Lab 08']);
|
||||
$seance = Seance::create(['classe_id' => $classe->id, 'lab_id' => $lab->id, 'statut' => Seance::EN_COURS, 'demarree_a' => now()]);
|
||||
$eleveActif = Eleve::factory()->create(['classe_id' => $classe->id, 'prenom' => 'Léa']);
|
||||
$eleveEchec = Eleve::factory()->create(['classe_id' => $classe->id, 'prenom' => 'Yanis']);
|
||||
|
||||
$sessionActive = LabSession::create(['seance_id' => $seance->id, 'eleve_id' => $eleveActif->id, 'lab_id' => $lab->id, 'etat' => LabSession::ACTIF]);
|
||||
Correction::create(['lab_session_id' => $sessionActive->id, 'reussi' => true, 'note' => 8, 'note_max' => 10, 'details' => []]);
|
||||
LabSession::create(['seance_id' => $seance->id, 'eleve_id' => $eleveEchec->id, 'lab_id' => $lab->id, 'etat' => LabSession::ECHEC, 'raison_echec' => 'CREATE_FAILED']);
|
||||
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.show', $classe))
|
||||
->assertOk()
|
||||
->assertSee('Lab 08')
|
||||
->assertSee('Léa')
|
||||
->assertSee('Réussi')
|
||||
->assertSee('8/10')
|
||||
->assertSee('Yanis')
|
||||
->assertSee('Échec (3 essais)')
|
||||
->assertSee('1/2') // dans la séance : 1 admis/actif sur 2 élèves
|
||||
->assertSee('100%') // réussite moyenne : la seule correction existante a réussi
|
||||
->assertDontSee('Mains levées'); // pas de visio ouverte : la carte n'existe pas
|
||||
});
|
||||
|
||||
test('un prof ne voit pas la séance en cours d’une autre classe', function () {
|
||||
$classe = Classe::factory()->create();
|
||||
$autreClasse = Classe::factory()->create();
|
||||
$lab = Lab::factory()->create();
|
||||
Seance::create(['classe_id' => $autreClasse->id, 'lab_id' => $lab->id, 'statut' => Seance::EN_COURS, 'demarree_a' => now()]);
|
||||
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.show', $classe))
|
||||
->assertOk()
|
||||
->assertDontSee('Dans la séance');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue