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