Completed
Push — master ( b6fd36...b52328 )
by Daniel
05:33
created

BaseDatabaseTestCase   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 5
c 1
b 1
f 0
lcom 1
cbo 8
dl 0
loc 42
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 6 1
B purgeDatabase() 0 24 4
1
<?php
2
3
namespace Task\TaskBundle\Tests\Functional;
4
5
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
6
use Doctrine\Common\DataFixtures\ProxyReferenceRepository;
7
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
8
use Doctrine\ORM\EntityManagerInterface;
9
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
10
11
/**
12
 * Extends kernel-test-case with additional functions/properties.
13
 */
14
abstract class BaseDatabaseTestCase extends KernelTestCase
15
{
16
    const ENTITY_MANAGER_ID = 'doctrine.orm.entity_manager';
17
18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function setUp()
22
    {
23
        self::bootKernel();
24
25
        $this->purgeDatabase();
26
    }
27
28
    /**
29
     * Purges database is necessary.
30
     */
31
    protected function purgeDatabase()
32
    {
33
        if (!self::$kernel->getContainer()->has(self::ENTITY_MANAGER_ID)) {
34
            return;
35
        }
36
37
        /** @var EntityManagerInterface $manager */
38
        $manager = self::$kernel->getContainer()->get(self::ENTITY_MANAGER_ID);
39
        $connection = $manager->getConnection();
40
41
        if ($connection->getDriver() instanceof \Doctrine\DBAL\Driver\PDOMySql\Driver) {
42
            $connection->executeUpdate('SET foreign_key_checks = 0;');
43
        }
44
45
        $purger = new ORMPurger();
46
        $executor = new ORMExecutor($manager, $purger);
47
        $referenceRepository = new ProxyReferenceRepository($manager);
48
        $executor->setReferenceRepository($referenceRepository);
49
        $executor->purge();
50
51
        if ($connection->getDriver() instanceof \Doctrine\DBAL\Driver\PDOMySql\Driver) {
52
            $connection->executeUpdate('SET foreign_key_checks = 1;');
53
        }
54
    }
55
}
56