AbstractDefaultContext::setKernel()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace ClientBundle\Behat;
4
5
use Behat\Symfony2Extension\Context\KernelAwareContext;
6
use Behat\MinkExtension\Context\MinkContext;
7
use Behat\Behat\Context\Context;
8
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
9
use Symfony\Component\HttpKernel\KernelInterface;
10
use Doctrine\Common\DataFixtures\Loader;
11
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
12
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
13
use Symfony\Component\DependencyInjection\ContainerInterface;
14
use Doctrine\Common\Persistence\ObjectManager;
15
16
/**
17
 * Class DefaultContext
18
 */
19
abstract class AbstractDefaultContext extends MinkContext implements Context, KernelAwareContext
20
{
21
    /**
22
     * @var KernelInterface
23
     */
24
    protected $kernel;
25
26
    /**
27
     * {@inheritdoc}
28
     */
29
    public function setKernel(KernelInterface $kernel)
30
    {
31
        $this->kernel = $kernel;
32
    }
33
34
    /**
35
     * @BeforeScenario
36
     * @param BeforeScenarioScope $scope
37
     */
38
    public function purgeDatabase(BeforeScenarioScope $scope)
0 ignored issues
show
Unused Code introduced by
The parameter $scope is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
39
    {
40
        $loader = new Loader();
41
        $loader->loadFromDirectory($this->kernel->getRootDir().'/../src/ClientBundle/DataFixtures/ORM/');
42
43
        $connection = $this->getContainer()->get('doctrine')->getConnection();
44
        $em = $this->getContainer()->get('doctrine.orm.entity_manager');
45
46
        $connection->beginTransaction();
47
        $connection->query('SET FOREIGN_KEY_CHECKS=0');
48
        $connection->commit();
49
50
        $purger = new ORMPurger($em);
51
        $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
52
        $executor = new ORMExecutor($em, $purger);
53
        $executor->purge();
54
55
        $connection->beginTransaction();
56
        $connection->query('SET FOREIGN_KEY_CHECKS=1');
57
        $connection->commit();
58
59
        $executor->execute($loader->getFixtures(), true);
60
    }
61
62
    /**
63
     * Get entity manager.
64
     *
65
     * @return ObjectManager
66
     */
67
    protected function getEntityManager()
68
    {
69
        return $this->getService('doctrine')->getManager();
70
    }
71
72
    /**
73
     * Returns Container instance.
74
     *
75
     * @return ContainerInterface
76
     */
77
    protected function getContainer()
78
    {
79
        return $this->kernel->getContainer();
80
    }
81
82
    /**
83
     * Get service by id.
84
     *
85
     * @param string $id
86
     *
87
     * @return object
88
     */
89
    protected function getService($id)
90
    {
91
        return $this->getContainer()->get($id);
92
    }
93
}
94