for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace ApplicationTest\Traits;
use Application\Model\Account;
use Application\Model\User;
use Application\Repository\AccountRepository;
use Ecodev\Felix\Testing\Traits\TestWithTransaction;
/**
* Allow to run test within a database transaction, so database will be unchanged after test.
*/
trait TestWithTransactionAndUser
{
use TestWithTransaction {
setUp as traitSetupWithTransaction;
tearDown as traitTearDownWithTransaction;
}
* Start transaction.
protected function setUp(): void
$this->traitSetupWithTransaction();
User::setCurrent(null);
* Cancel transaction, to undo all changes made.
protected function tearDown(): void
/** @var AccountRepository $accountRepository */
$accountRepository = $this->getEntityManager()->getRepository(Account::class);
$accountRepository->clearCache();
$this->traitTearDownWithTransaction();
protected function setCurrentUser(string $login): void
$user = null;
if ($login !== 'anonymous') {
$userRepository = $this->getEntityManager()->getRepository(User::class);
$user = $userRepository->getOneByLoginOrEmail($login);
self::assertNotNull($user, 'given login must exist in test DB: ' . $login);
User::setCurrent($user);