Skip to content

Commit 40e359e

Browse files
committed
move bootstrapping to setup
1 parent bf3e8c9 commit 40e359e

File tree

5 files changed

+72
-47
lines changed

5 files changed

+72
-47
lines changed

src/Maker/MakeRegistrationForm.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
1919
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
2020
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
21+
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
2122
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
2223
use Symfony\Bundle\MakerBundle\ConsoleStyle;
2324
use Symfony\Bundle\MakerBundle\DependencyBuilder;
@@ -418,6 +419,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
418419

419420
$useStatements = new UseStatementGenerator([
420421
EntityManager::class,
422+
KernelBrowser::class,
421423
TemplatedEmail::class,
422424
WebTestCase::class,
423425
$userRepoVars['repository_full_class_name'],

src/Maker/MakeResetPassword.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Symfony\Bridge\Twig\AppVariable;
1818
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
1919
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
20+
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
2021
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
2122
use Symfony\Bundle\MakerBundle\ConsoleStyle;
2223
use Symfony\Bundle\MakerBundle\DependencyBuilder;
@@ -357,14 +358,15 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
357358
);
358359

359360
$userRepositoryDetails = $generator->createClassNameDetails(
360-
'\\'.$this->userClass.'Repository',
361+
sprintf('%sRepository', $userClassNameDetails->getShortName()),
361362
'Repository\\'
362363
);
363364

364365
$useStatements = new UseStatementGenerator([
365366
$userClassNameDetails->getFullName(),
366367
$userRepositoryDetails->getFullName(),
367368
EntityManager::class,
369+
KernelBrowser::class,
368370
WebTestCase::class,
369371
UserPasswordHasherInterface::class,
370372
]);

src/Resources/skeleton/registration/Test.WithVerify.tpl.php

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,43 @@
55

66
class RegistrationControllerTest extends WebTestCase
77
{
8-
public function testRegister(): void
8+
private KernelBrowser $client;
9+
private <?= $repository_class_name ?> $userRepository;
10+
11+
protected function setUp(): void
912
{
10-
$client = static::createClient();
13+
$this->client = static::createClient();
1114

15+
// Ensure we have a clean database
1216
$container = static::getContainer();
13-
$em = $container->get('doctrine.orm.entity_manager');
14-
$userRepository = $container->get(<?= $repository_class_name ?>::class);
1517

16-
foreach ($userRepository->findAll() as $user) {
18+
/** @var EntityManager $em */
19+
$em = $container->get('doctrine')->getManager();
20+
$this->userRepository = $container->get(<?= $repository_class_name ?>::class);
21+
22+
foreach ($this->userRepository->findAll() as $user) {
1723
$em->remove($user);
1824
}
1925

2026
$em->flush();
27+
}
2128

22-
self::assertCount(0, $userRepository->findAll());
23-
29+
public function testRegister(): void
30+
{
2431
// Register a new user
25-
$client->request('GET', '/register');
32+
$this->client->request('GET', '/register');
2633
self::assertResponseIsSuccessful();
2734

28-
$client->submitForm('Register', [
35+
$this->client->submitForm('Register', [
2936
'registration_form[email]' => '[email protected]',
3037
'registration_form[plainPassword]' => 'password',
3138
'registration_form[agreeTerms]' => true,
3239
]);
3340

3441
// Ensure the response redirects after submitting the form, the user exists, and is not verified
3542
// self::assertResponseRedirects('/');
36-
self::assertCount(1, $userRepository->findAll());
37-
self::assertFalse(($user = $userRepository->findAll()[0])->isVerified());
43+
self::assertCount(1, $this->userRepository->findAll());
44+
self::assertFalse(($user = $this->userRepository->findAll()[0])->isVerified());
3845

3946
// Ensure the verification email was sent
4047
// Use either assertQueuedEmailCount() || assertEmailCount() depending on your mailer setup
@@ -47,8 +54,8 @@ public function testRegister(): void
4754
self::assertEmailTextBodyContains($messages[0], 'This link will expire in 1 hour.');
4855

4956
// Login the new user
50-
$client->followRedirect();
51-
$client->loginUser($user);
57+
$this->client->followRedirect();
58+
$this->client->loginUser($user);
5259

5360
// Get the verification link from the email
5461
/** @var TemplatedEmail $templatedEmail */
@@ -57,10 +64,10 @@ public function testRegister(): void
5764

5865
preg_match('#(http://localhost/verify/email.+)">#', $messageBody, $resetLink);
5966

60-
// "Click" the link, and see if the user is verified
61-
$client->request('GET', $resetLink[1]);
62-
$client->followRedirect();
67+
// "Click" the link and see if the user is verified
68+
$this->client->request('GET', $resetLink[1]);
69+
$this->client->followRedirect();
6370

64-
self::assertTrue(static::getContainer()->get(UserRepository::class)->findAll()[0]->isVerified());
71+
self::assertTrue(static::getContainer()->get(<?= $repository_class_name ?>::class)->findAll()[0]->isVerified());
6572
}
6673
}

src/Resources/skeleton/registration/Test.WithoutVerify.tpl.php

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,41 @@
55

66
class RegistrationControllerTest extends WebTestCase
77
{
8-
public function testRegister(): void
8+
private KernelBrowser $client;
9+
private <?= $repository_class_name ?> $userRepository;
10+
11+
protected function setUp(): void
912
{
10-
$client = static::createClient();
13+
$this->client = static::createClient();
1114

15+
// Ensure we have a clean database
1216
$container = static::getContainer();
13-
$em = $container->get('doctrine.orm.entity_manager');
14-
$userRepository = $container->get(<?= $repository_class_name ?>::class);
1517

16-
foreach ($userRepository->findAll() as $user) {
18+
/** @var EntityManager $em */
19+
$em = $container->get('doctrine')->getManager();
20+
$this->userRepository = $container->get(<?= $repository_class_name ?>::class);
21+
22+
foreach ($this->userRepository->findAll() as $user) {
1723
$em->remove($user);
1824
}
1925

2026
$em->flush();
27+
}
2128

22-
self::assertCount(0, $userRepository->findAll());
23-
29+
public function testRegister(): void
30+
{
2431
// Register a new user
25-
$client->request('GET', '/register');
32+
$this->client->request('GET', '/register');
2633
self::assertResponseIsSuccessful();
2734

28-
$client->submitForm('Register', [
35+
$this->client->submitForm('Register', [
2936
'registration_form[email]' => '[email protected]',
3037
'registration_form[plainPassword]' => 'password',
3138
'registration_form[agreeTerms]' => true,
3239
]);
3340

3441
// Ensure the response redirects after submitting the form, the user exists, and is not verified
3542
// self::assertResponseRedirects('/');
36-
self::assertCount(1, $userRepository->findAll());
43+
self::assertCount(1, $this->userRepository->findAll());
3744
}
3845
}

src/Resources/skeleton/resetPassword/Test.ResetPasswordController.tpl.php

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,44 @@
55

66
class ResetPasswordTest extends WebTestCase
77
{
8-
public function testMaker(): void
8+
private KernelBrowser $client;
9+
private EntityManager $em;
10+
private <?= $user_repo_short_name ?> $userRepository;
11+
12+
protected function setUp(): void
913
{
10-
$client = static::createClient();
11-
/** @var EntityManager $em */
12-
$em = static::getContainer()->get('doctrine')->getManager();
14+
$this->client = static::createClient();
1315

14-
/** @var <?= $user_repo_short_name ?> $repository */
15-
$repository = $em->getRepository(<?= $user_short_name ?>::class);
16+
// Ensure we have a clean database
17+
$container = static::getContainer();
18+
$this->em = $container->get('doctrine')->getManager();
19+
$this->userRepository = $this->em->getRepository(<?= $user_short_name ?>::class);
1620

17-
// Ensure there are no users in persistence
18-
foreach ($repository->findAll() as $existingUser) {
19-
$em->remove($existingUser);
21+
foreach ($this->userRepository->findAll() as $user) {
22+
$this->em->remove($user);
2023
}
21-
$em->flush();
2224

25+
$this->em->flush();
26+
}
27+
28+
public function testMaker(): void
29+
{
2330
// Create a test user
2431
$user = (new <?= $user_short_name ?>())
2532
->setEmail('[email protected]')
2633
->setPassword('a-test-password-that-will-be-changed-later')
2734
;
28-
$em->persist($user);
29-
$em->flush();
35+
$this->em->persist($user);
36+
$this->em->flush();
3037

3138
// Test Request reset password page
32-
$client->request('GET', '/reset-password');
39+
$this->client->request('GET', '/reset-password');
3340

3441
self::assertResponseIsSuccessful();
3542
self::assertPageTitleContains('Reset your password');
3643

3744
// Submit the reset password form and test email message is queued / sent
38-
$client->submitForm('Send password reset email', [
45+
$this->client->submitForm('Send password reset email', [
3946
'reset_password_request_form[email]' => '[email protected]',
4047
]);
4148

@@ -51,7 +58,7 @@ public function testMaker(): void
5158
self::assertResponseRedirects('/reset-password/check-email');
5259

5360
// Test check email landing page shows correct "expires at" time
54-
$crawler = $client->followRedirect();
61+
$crawler = $this->client->followRedirect();
5562

5663
self::assertPageTitleContains('Password Reset Email Sent');
5764
self::assertStringContainsString('This link will expire in 1 hour', $crawler->html());
@@ -60,21 +67,21 @@ public function testMaker(): void
6067
$email = $messages[0]->toString();
6168
preg_match('#(/reset-password/reset/[a-zA-Z0-9]+)#', $email, $resetLink);
6269

63-
$client->request('GET', $resetLink[1]);
70+
$this->client->request('GET', $resetLink[1]);
6471

6572
self::assertResponseRedirects('/reset-password/reset');
6673

67-
$client->followRedirect();
74+
$this->client->followRedirect();
6875

6976
// Test we can set a new password
70-
$client->submitForm('Reset password', [
77+
$this->client->submitForm('Reset password', [
7178
'change_password_form[plainPassword][first]' => 'newStrongPassword',
7279
'change_password_form[plainPassword][second]' => 'newStrongPassword',
7380
]);
7481

7582
self::assertResponseRedirects('<?= $success_route_path ?>');
7683

77-
$user = $repository->findOneBy(['email' => '[email protected]']);
84+
$user = $this->userRepository->findOneBy(['email' => '[email protected]']);
7885

7986
/** @var UserPasswordHasherInterface $passwordHasher */
8087
$passwordHasher = static::getContainer()->get(UserPasswordHasherInterface::class);

0 commit comments

Comments
 (0)