ajoute la banque de quiz : partager un quiz, le dupliquer dans une autre classe
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
16d1293911
commit
bd74eaf20f
10 changed files with 271 additions and 5 deletions
|
|
@ -207,3 +207,60 @@ test('les scripts en ligne des pages du quiz flash sont du JavaScript valide', f
|
|||
|
||||
expect($erreurs)->toBe([]);
|
||||
});
|
||||
|
||||
test('un prof partage un quiz, un autre prof le voit dans la banque et le duplique dans sa propre classe', function () {
|
||||
['classe' => $classe, 'quiz' => $quiz] = quizPret();
|
||||
$autreClasse = Classe::factory()->create();
|
||||
|
||||
commeProf($this, $classe->prof)->post(route('mes-classes.quiz.partager', [$classe, $quiz]))->assertRedirect();
|
||||
expect($quiz->refresh()->partage)->toBeTrue();
|
||||
|
||||
commeProf($this, $autreClasse->prof)->get(route('banque-quiz.index'))
|
||||
->assertSee('Capitales')
|
||||
->assertSee($classe->etablissement->nom);
|
||||
|
||||
commeProf($this, $autreClasse->prof)
|
||||
->post(route('banque-quiz.dupliquer', $quiz), ['classe_id' => $autreClasse->id])
|
||||
->assertRedirect();
|
||||
|
||||
$copie = Quiz::where('classe_id', $autreClasse->id)->first();
|
||||
expect($copie)->not->toBeNull()
|
||||
->and($copie->id)->not->toBe($quiz->id)
|
||||
->and($copie->titre)->toBe('Capitales')
|
||||
->and($copie->partage)->toBeFalse() // la copie n'est pas partagée d'office
|
||||
->and($copie->questions)->toHaveCount(2);
|
||||
|
||||
$copieQcm = $copie->questions->firstWhere('type', 'qcm');
|
||||
expect($copieQcm->choix)->toHaveCount(2)
|
||||
->and($copieQcm->choix->firstWhere('texte', 'Paris')->est_correct)->toBeTrue()
|
||||
->and($copieQcm->id)->not->toBe($quiz->questions->firstWhere('type', 'qcm')->id); // vraie copie, pas une référence
|
||||
|
||||
// Modifier la copie ne doit jamais toucher l'original.
|
||||
$copie->update(['titre' => 'Capitales (adapté)']);
|
||||
expect($quiz->refresh()->titre)->toBe('Capitales');
|
||||
});
|
||||
|
||||
test('un prof ne peut pas dupliquer un quiz non partagé, ni dans la classe d’un autre prof', function () {
|
||||
['classe' => $classe, 'quiz' => $quiz] = quizPret();
|
||||
$autreClasse = Classe::factory()->create();
|
||||
|
||||
// Pas partagé : 404.
|
||||
commeProf($this, $autreClasse->prof)
|
||||
->post(route('banque-quiz.dupliquer', $quiz), ['classe_id' => $autreClasse->id])
|
||||
->assertNotFound();
|
||||
|
||||
$quiz->update(['partage' => true]);
|
||||
|
||||
// Partagé, mais vers une classe qui n'est pas la sienne : refusé.
|
||||
commeProf($this, $autreClasse->prof)
|
||||
->post(route('banque-quiz.dupliquer', $quiz), ['classe_id' => $classe->id])
|
||||
->assertNotFound();
|
||||
});
|
||||
|
||||
test('seul le prof propriétaire peut partager ou retirer son quiz de la banque', function () {
|
||||
['classe' => $classe, 'quiz' => $quiz] = quizPret();
|
||||
$autreClasse = Classe::factory()->create();
|
||||
|
||||
commeProf($this, $autreClasse->prof)->post(route('mes-classes.quiz.partager', [$classe, $quiz]))->assertForbidden();
|
||||
expect($quiz->refresh()->partage)->toBeFalse();
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue