Paillasse/portail/tests/Feature/TableauDeBordProfTest.php
2026-10-12 22:25:56 +02:00

59 lines
2.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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');
});