68 lines
2.8 KiB
PHP
68 lines
2.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
use App\Models\Classe;
|
||
|
|
use App\Models\Etablissement;
|
||
|
|
use App\Models\User;
|
||
|
|
|
||
|
|
test('un prof crée son compte, son établissement et sa première classe en une fois', function () {
|
||
|
|
$reponse = $this->post(route('inscription.store'), [
|
||
|
|
'prenom' => 'Chloé',
|
||
|
|
'nom' => 'Roux',
|
||
|
|
'email' => 'chloe.roux@exemple.test',
|
||
|
|
'password' => 'mot-de-passe-sur',
|
||
|
|
'password_confirmation' => 'mot-de-passe-sur',
|
||
|
|
'etablissement_nom_liste' => 'autre',
|
||
|
|
'etablissement_nom' => 'Lycée Marie-Curie',
|
||
|
|
'etablissement_ville' => 'Nancy',
|
||
|
|
'etablissement_uai' => '',
|
||
|
|
'formation' => 'BTS SIO SISR',
|
||
|
|
'classe' => '2nde NSI · Groupe B',
|
||
|
|
]);
|
||
|
|
|
||
|
|
$etablissement = Etablissement::where('nom', 'Lycée Marie-Curie')->first();
|
||
|
|
expect($etablissement)->not->toBeNull();
|
||
|
|
|
||
|
|
$prof = User::where('email', 'chloe.roux@exemple.test')->first();
|
||
|
|
expect($prof)->not->toBeNull();
|
||
|
|
expect($prof->etablissement_id)->toBe($etablissement->id);
|
||
|
|
|
||
|
|
$classe = Classe::where('nom', '2nde NSI · Groupe B')->first();
|
||
|
|
expect($classe)->not->toBeNull();
|
||
|
|
expect($classe->user_id)->toBe($prof->id);
|
||
|
|
expect($classe->code_classe)->toHaveLength(6);
|
||
|
|
|
||
|
|
$reponse->assertRedirect(route('mes-classes.show', $classe));
|
||
|
|
$this->assertAuthenticatedAs($prof, 'web');
|
||
|
|
});
|
||
|
|
|
||
|
|
test('une classe existante peut réutiliser le même établissement', function () {
|
||
|
|
$this->post(route('inscription.store'), [
|
||
|
|
'prenom' => 'A', 'nom' => 'B', 'email' => 'a@exemple.test',
|
||
|
|
'password' => 'mot-de-passe-sur', 'password_confirmation' => 'mot-de-passe-sur',
|
||
|
|
'etablissement_nom_liste' => 'Lycée Jean-Jaurès · Montreuil',
|
||
|
|
'formation' => 'BTS SIO SISR', 'classe' => 'Classe 1',
|
||
|
|
]);
|
||
|
|
|
||
|
|
$this->post(route('inscription.store'), [
|
||
|
|
'prenom' => 'C', 'nom' => 'D', 'email' => 'c@exemple.test',
|
||
|
|
'password' => 'mot-de-passe-sur', 'password_confirmation' => 'mot-de-passe-sur',
|
||
|
|
'etablissement_nom_liste' => 'Lycée Jean-Jaurès · Montreuil',
|
||
|
|
'formation' => 'BTS SIO SISR', 'classe' => 'Classe 2',
|
||
|
|
]);
|
||
|
|
|
||
|
|
expect(Etablissement::where('nom', 'Lycée Jean-Jaurès · Montreuil')->count())->toBe(1);
|
||
|
|
expect(Classe::count())->toBe(2);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("l'inscription échoue si les mots de passe ne correspondent pas", function () {
|
||
|
|
$this->post(route('inscription.store'), [
|
||
|
|
'prenom' => 'Chloé', 'nom' => 'Roux', 'email' => 'chloe@exemple.test',
|
||
|
|
'password' => 'mot-de-passe-sur', 'password_confirmation' => 'autre-chose',
|
||
|
|
'etablissement_nom_liste' => 'autre',
|
||
|
|
'etablissement_nom' => 'Lycée Marie-Curie', 'etablissement_ville' => 'Nancy',
|
||
|
|
'formation' => 'BTS SIO SISR', 'classe' => '2nde NSI',
|
||
|
|
])->assertSessionHasErrors('password');
|
||
|
|
|
||
|
|
expect(User::count())->toBe(0);
|
||
|
|
});
|