Skip to content

Commit b0d7675

Browse files
committed
Split SymfonyModuleCest
1 parent 745cf89 commit b0d7675

13 files changed

+630
-526
lines changed

composer.lock

Lines changed: 165 additions & 168 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/Functional/BrowserCest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Entity\User;
8+
use App\Tests\FunctionalTester;
9+
10+
final class BrowserCest
11+
{
12+
public function seePageIsAvailable(FunctionalTester $I)
13+
{
14+
$I->seePageIsAvailable('/');
15+
}
16+
17+
public function seePageRedirectsTo(FunctionalTester $I)
18+
{
19+
$I->seePageRedirectsTo('/dashboard', '/login');
20+
}
21+
22+
public function submitSymfonyForm(FunctionalTester $I)
23+
{
24+
$I->amOnPage('/register');
25+
$I->submitSymfonyForm('registration_form', [
26+
'[email]' => 'jane_doe@gmail.com',
27+
'[plainPassword]' => '123456',
28+
'[agreeTerms]' => true
29+
]);
30+
$I->seeInRepository(User::class, [
31+
'email' => 'jane_doe@gmail.com'
32+
]);
33+
}
34+
}

tests/Functional/ConsoleCest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Command\ExampleCommand;
8+
use App\Tests\FunctionalTester;
9+
10+
final class ConsoleCest
11+
{
12+
public function runSymfonyConsoleCommand(FunctionalTester $I)
13+
{
14+
// Call Symfony console without option
15+
$output = $I->runSymfonyConsoleCommand(ExampleCommand::getDefaultName());
16+
$I->assertStringContainsString('Hello world!', $output);
17+
18+
// Call Symfony console with short option
19+
$output = $I->runSymfonyConsoleCommand(
20+
ExampleCommand::getDefaultName(),
21+
['-s' => true]
22+
);
23+
$I->assertStringContainsString('Bye world!', $output);
24+
25+
// Call Symfony console with long option
26+
$output = $I->runSymfonyConsoleCommand(
27+
ExampleCommand::getDefaultName(),
28+
['--something' => true]
29+
);
30+
$I->assertStringContainsString('Bye world!', $output);
31+
}
32+
}

tests/Functional/DoctrineCest.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Entity\User;
8+
use App\Repository\Model\UserRepositoryInterface;
9+
use App\Repository\UserRepository;
10+
use App\Tests\FunctionalTester;
11+
12+
final class DoctrineCest
13+
{
14+
public function grabNumRecords(FunctionalTester $I)
15+
{
16+
$numRecords = $I->grabNumRecords(User::class);
17+
$I->assertSame(1, $numRecords);
18+
}
19+
20+
public function grabRepository(FunctionalTester $I)
21+
{
22+
//With classes
23+
$repository = $I->grabRepository(User::class);
24+
$I->assertInstanceOf(UserRepository::class, $repository);
25+
26+
//With Repository classes
27+
$repository = $I->grabRepository(UserRepository::class);
28+
$I->assertInstanceOf(UserRepository::class, $repository);
29+
30+
//With Entities
31+
$user = $I->grabEntityFromRepository(User::class, [
32+
'email' => 'john_doe@gmail.com'
33+
]);
34+
$repository = $I->grabRepository($user);
35+
$I->assertInstanceOf(UserRepository::class, $repository);
36+
37+
//With Repository interfaces
38+
$repository = $I->grabRepository(UserRepositoryInterface::class);
39+
$I->assertInstanceOf(UserRepository::class, $repository);
40+
}
41+
42+
public function seeNumRecords(FunctionalTester $I)
43+
{
44+
$I->seeNumRecords(1, User::class);
45+
}
46+
47+
}

tests/Functional/EventsCest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Tests\FunctionalTester;
8+
use Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener;
9+
use Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector;
10+
use Symfony\Component\Console\EventListener\ErrorListener;
11+
12+
final class EventsCest
13+
{
14+
public function dontSeeEventTriggered(FunctionalTester $I)
15+
{
16+
$I->amOnPage('/');
17+
$I->dontSeeEventTriggered(ErrorListener::class);
18+
$I->dontSeeEventTriggered(new ErrorListener());
19+
$I->dontSeeEventTriggered([ErrorListener::class, ErrorListener::class]);
20+
}
21+
22+
public function seeEventTriggered(FunctionalTester $I)
23+
{
24+
$I->amOnPage('/');
25+
$I->seeEventTriggered(SecurityListener::class);
26+
$I->seeEventTriggered(new RouterDataCollector());
27+
$I->seeEventTriggered([SecurityListener::class, RouterDataCollector::class]);
28+
}
29+
}

tests/Functional/FormCest.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Tests\FunctionalTester;
8+
9+
final class FormCest
10+
{
11+
public function dontSeeFormErrors(FunctionalTester $I)
12+
{
13+
$I->amOnPage('/register');
14+
$I->submitSymfonyForm('registration_form', [
15+
'[email]' => 'jane_doe@gmail.com',
16+
'[plainPassword]' => '123456',
17+
'[agreeTerms]' => true
18+
]);
19+
$I->dontSeeFormErrors();
20+
}
21+
22+
public function seeFormErrorMessage(FunctionalTester $I)
23+
{
24+
$I->amOnPage('/register');
25+
$I->submitSymfonyForm('registration_form', [
26+
'[email]' => 'john_doe@gmail.com',
27+
'[plainPassword]' => '123456',
28+
'[agreeTerms]' => true
29+
]);
30+
$I->seeFormErrorMessage('email');
31+
$I->seeFormErrorMessage('email', 'There is already an account with this email');
32+
}
33+
34+
public function seeFormErrorMessages(FunctionalTester $I)
35+
{
36+
$I->amOnPage('/register');
37+
$I->submitSymfonyForm('registration_form', [
38+
'[email]' => 'john_doe@gmail.com',
39+
'[plainPassword]' => '123',
40+
'[agreeTerms]' => true
41+
]);
42+
43+
// Only with the names of the fields
44+
$I->seeFormErrorMessages(['email', 'plainPassword']);
45+
46+
// With field names and error messages
47+
$I->seeFormErrorMessages([
48+
// Full Message
49+
'email' => 'There is already an account with this email',
50+
// Part of a message
51+
'plainPassword' => 'at least 6 characters'
52+
]);
53+
}
54+
55+
public function seeFormHasErrors(FunctionalTester $I)
56+
{
57+
$I->amOnPage('/register');
58+
$I->submitSymfonyForm('registration_form', [
59+
'[email]' => 'john_doe@gmail.com',
60+
'[plainPassword]' => '123456',
61+
'[agreeTerms]' => true
62+
]);
63+
//There is already an account with this email
64+
$I->seeFormHasErrors();
65+
}
66+
}

tests/Functional/MailerCest.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Tests\FunctionalTester;
8+
9+
final class MailerCest
10+
{
11+
public function dontSeeEmailIsSent(FunctionalTester $I)
12+
{
13+
$I->amOnPage('/register');
14+
$I->submitSymfonyForm('registration_form', [
15+
'[email]' => 'john_doe@gmail.com',
16+
'[plainPassword]' => '123456',
17+
'[agreeTerms]' => true
18+
]);
19+
//There is already an account with this email
20+
$I->dontSeeEmailIsSent();
21+
}
22+
23+
public function seeEmailIsSent(FunctionalTester $I)
24+
{
25+
$I->amOnPage('/register');
26+
$I->stopFollowingRedirects();
27+
$I->submitSymfonyForm('registration_form', [
28+
'[email]' => 'jane_doe@gmail.com',
29+
'[plainPassword]' => '123456',
30+
'[agreeTerms]' => true
31+
]);
32+
$I->seeEmailIsSent();
33+
}
34+
35+
}

tests/Functional/ParameterCest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Tests\FunctionalTester;
8+
9+
final class ParameterCest
10+
{
11+
public function grabParameter(FunctionalTester $I)
12+
{
13+
$locale = (string) $I->grabParameter('locale');
14+
$I->assertSame('es', $locale);
15+
}
16+
}

tests/Functional/RouterCest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Tests\FunctionalTester;
8+
9+
final class RouterCest
10+
{
11+
public function amOnAction(FunctionalTester $I)
12+
{
13+
$I->amOnAction('HomeController');
14+
$I->see('Hello World!');
15+
}
16+
17+
public function amOnRoute(FunctionalTester $I)
18+
{
19+
$I->amOnRoute('index');
20+
$I->see('Hello World!');
21+
}
22+
23+
public function seeCurrentActionIs(FunctionalTester $I)
24+
{
25+
$I->amOnPage('/');
26+
$I->seeCurrentActionIs('HomeController');
27+
}
28+
29+
public function seeCurrentRouteIs(FunctionalTester $I)
30+
{
31+
$I->amOnPage('/login');
32+
$I->seeCurrentRouteIs('app_login');
33+
}
34+
35+
public function seeInCurrentRoute(FunctionalTester $I)
36+
{
37+
$I->amOnPage('/');
38+
$I->seeInCurrentRoute('index');
39+
}
40+
41+
}

tests/Functional/SecurityCest.php

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Tests\Functional;
6+
7+
use App\Entity\User;
8+
use App\Tests\FunctionalTester;
9+
10+
final class SecurityCest
11+
{
12+
public function dontSeeAuthentication(FunctionalTester $I)
13+
{
14+
$I->amOnPage('/dashboard');
15+
$I->dontSeeAuthentication();
16+
}
17+
18+
public function dontSeeRememberedAuthentication(FunctionalTester $I)
19+
{
20+
$I->amOnPage('/login');
21+
$I->submitForm('form[name=login]', [
22+
'email' => 'john_doe@gmail.com',
23+
'password' => '123456',
24+
'_remember_me' => false
25+
]);
26+
$I->dontSeeRememberedAuthentication();
27+
}
28+
29+
public function seeAuthentication(FunctionalTester $I)
30+
{
31+
$user = $I->grabEntityFromRepository(User::class, [
32+
'email' => 'john_doe@gmail.com'
33+
]);
34+
$I->amLoggedInAs($user);
35+
$I->amOnPage('/dashboard');
36+
37+
$I->seeAuthentication();
38+
}
39+
40+
public function seeRememberedAuthentication(FunctionalTester $I)
41+
{
42+
$I->amOnPage('/login');
43+
$I->submitForm('form[name=login]', [
44+
'email' => 'john_doe@gmail.com',
45+
'password' => '123456',
46+
'_remember_me' => true
47+
]);
48+
$I->seeRememberedAuthentication();
49+
}
50+
51+
public function seeUserHasRole(FunctionalTester $I)
52+
{
53+
$user = $I->grabEntityFromRepository(User::class, [
54+
'email' => 'john_doe@gmail.com'
55+
]);
56+
$I->amLoggedInAs($user);
57+
$I->amOnPage('/');
58+
59+
$I->seeUserHasRole('ROLE_USER');
60+
}
61+
62+
public function seeUserHasRoles(FunctionalTester $I)
63+
{
64+
$user = $I->grabEntityFromRepository(User::class, [
65+
'email' => 'john_doe@gmail.com'
66+
]);
67+
$I->amLoggedInAs($user);
68+
$I->amOnPage('/');
69+
70+
$I->seeUserHasRoles(['ROLE_USER', 'ROLE_CUSTOMER']);
71+
}
72+
73+
public function seeUserPasswordDoesNotNeedRehash(FunctionalTester $I)
74+
{
75+
$user = $I->grabEntityFromRepository(User::class, [
76+
'email' => 'john_doe@gmail.com'
77+
]);
78+
$I->amLoggedInAs($user);
79+
$I->amOnPage('/dashboard');
80+
81+
$I->seeUserPasswordDoesNotNeedRehash();
82+
}
83+
}

0 commit comments

Comments
 (0)