Completed
Push — master ( a505e4...b3eecd )
by Andrew
11:53 queued 07:10
created

AbstractDefaultContext   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setKernel() 0 4 1
A purgeDatabase() 0 23 1
A getEntityManager() 0 4 1
A getContainer() 0 4 1
A getService() 0 4 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
use Behat\Behat\Hook\Call\BeforeScenario;
16
17
/**
18
 * Class DefaultContext
19
 */
20
abstract class AbstractDefaultContext extends MinkContext implements Context, KernelAwareContext
21
{
22
    /**
23
     * @var KernelInterface
24
     */
25
    protected $kernel;
26
27
    /**
28
     * {@inheritdoc}
29
     */
30
    public function setKernel(KernelInterface $kernel)
31
    {
32
        $this->kernel = $kernel;
33
    }
34
35
    /**
36
     * @BeforeScenario
37
     * @param BeforeScenarioScope $scope
38
     */
39
    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...
40
    {
41
        $loader = new Loader();
42
        $loader->loadFromDirectory($this->kernel->getRootDir().'/../src/ClientBundle/DataFixtures/ORM/');
43
44
        $connection = $this->getContainer()->get('doctrine')->getConnection();
45
        $em = $this->getContainer()->get('doctrine.orm.entity_manager');
46
47
        $connection->beginTransaction();
48
        $connection->query('SET FOREIGN_KEY_CHECKS=0');
49
        $connection->commit();
50
51
        $purger = new ORMPurger($em);
52
        $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
53
        $executor = new ORMExecutor($em, $purger);
54
        $executor->purge();
55
56
        $connection->beginTransaction();
57
        $connection->query('SET FOREIGN_KEY_CHECKS=1');
58
        $connection->commit();
59
60
        $executor->execute($loader->getFixtures(), true);
61
    }
62
63
    /**
64
     * Get entity manager.
65
     *
66
     * @return ObjectManager
67
     */
68
    protected function getEntityManager()
69
    {
70
        return $this->getService('doctrine')->getManager();
71
    }
72
73
    /**
74
     * Returns Container instance.
75
     *
76
     * @return ContainerInterface
77
     */
78
    protected function getContainer()
79
    {
80
        return $this->kernel->getContainer();
81
    }
82
83
    /**
84
     * Get service by id.
85
     *
86
     * @param string $id
87
     *
88
     * @return object
89
     */
90
    protected function getService($id)
91
    {
92
        return $this->getContainer()->get($id);
93
    }
94
}
95