rapproche encore le tableau de bord de la démo /cockpit : avancement par vérification, mains levées avec action réelle, progression de la séance
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
0573894721
commit
ee079ddffb
6 changed files with 178 additions and 6 deletions
|
|
@ -6,6 +6,7 @@ use App\Models\Eleve;
|
|||
use App\Models\Lab;
|
||||
use App\Models\LabSession;
|
||||
use App\Models\Seance;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
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']);
|
||||
|
|
@ -23,7 +24,7 @@ test('le tableau de bord d’une classe vide affiche les cartes réelles, sans a
|
|||
|
||||
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']);
|
||||
$lab = Lab::factory()->create(['identifiant' => '08-deux-lan-routeur', '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']);
|
||||
|
|
@ -46,6 +47,51 @@ test('une séance en cours montre les vrais élèves, leur état et leur derniè
|
|||
->assertDontSee('Mains levées'); // pas de visio ouverte : la carte n'existe pas
|
||||
});
|
||||
|
||||
test('l’avancement du lab compte les vraies vérifications réussies, jamais les bonus', function () {
|
||||
$classe = Classe::factory()->create();
|
||||
$lab = Lab::factory()->create(['identifiant' => '08-deux-lan-routeur']);
|
||||
$seance = Seance::create(['classe_id' => $classe->id, 'lab_id' => $lab->id, 'statut' => Seance::EN_COURS, 'demarree_a' => now()]);
|
||||
$eleve = Eleve::factory()->create(['classe_id' => $classe->id]);
|
||||
$session = LabSession::create(['seance_id' => $seance->id, 'eleve_id' => $eleve->id, 'lab_id' => $lab->id, 'etat' => LabSession::ACTIF]);
|
||||
Correction::create(['lab_session_id' => $session->id, 'reussi' => false, 'note' => 1, 'note_max' => 7, 'details' => [
|
||||
['id' => 'ip-pc-a', 'titre' => 'Adresse de PC-A', 'points' => 1, 'bonus' => false, 'reussi' => true, 'message' => null],
|
||||
['id' => 'forwarding', 'titre' => 'Routage activé', 'points' => 1, 'bonus' => false, 'reussi' => false, 'message' => 'Regarde net.ipv4.ip_forward.'],
|
||||
['id' => 'bonus-permanent', 'titre' => 'Routage permanent', 'points' => 1, 'bonus' => true, 'reussi' => true, 'message' => null],
|
||||
]]);
|
||||
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.show', $classe))
|
||||
->assertOk()
|
||||
->assertSee('Avancement du lab')
|
||||
->assertSee('Adresse de PC-A')
|
||||
->assertSee('1/1') // réussi par le seul élève corrigé
|
||||
->assertSee('Routage activé')
|
||||
->assertSee('0/1') // pas réussi
|
||||
->assertDontSee('Routage permanent'); // bonus : hors du parcours normal
|
||||
});
|
||||
|
||||
test('les mains levées de la visio apparaissent sur le tableau de bord, avec l’action réelle « donner la parole »', function () {
|
||||
$classe = Classe::factory()->create();
|
||||
$lab = Lab::factory()->create(['identifiant' => '08-deux-lan-routeur']);
|
||||
$seance = Seance::create([
|
||||
'classe_id' => $classe->id, 'lab_id' => $lab->id, 'statut' => Seance::EN_COURS, 'demarree_a' => now(),
|
||||
'visio_ouverte_a' => now(), 'visio_salle' => 'syllabus-test', 'visio_chat' => false,
|
||||
]);
|
||||
$eleve = Eleve::factory()->create(['classe_id' => $classe->id, 'prenom' => 'Léa']);
|
||||
Cache::put("visio:{$seance->id}", [
|
||||
'mains' => [$eleve->id => ['nom' => 'Léa', 'depuis' => time() - 90]],
|
||||
'participants' => [], 'presences' => [],
|
||||
], 3600);
|
||||
|
||||
commeProf($this, $classe->prof)
|
||||
->get(route('mes-classes.show', $classe))
|
||||
->assertOk()
|
||||
->assertSee('Mains levées')
|
||||
->assertSee('Léa')
|
||||
->assertSee('1 min 30 s')
|
||||
->assertSee(route('seances.visio.parole', [$seance, $eleve]), false);
|
||||
});
|
||||
|
||||
test('un prof ne voit pas la séance en cours d’une autre classe', function () {
|
||||
$classe = Classe::factory()->create();
|
||||
$autreClasse = Classe::factory()->create();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue