Completed
Pull Request — master (#103)
by Ross
06:06
created

DoctrineMiddlewarePassTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 3
Bugs 0 Features 1
Metric Value
wmc 9
c 3
b 0
f 1
lcom 1
cbo 4
dl 0
loc 80
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A registerCompilerPass() 0 4 1
A test_registering_middleware_for_multiple_entity_managers() 0 23 2
A test_do_not_process_when_there_are_no_entity_managers() 0 10 2
A test_do_not_process_when_tactician_doctrine_is_not_installed() 0 13 2
A test_rollback_only_middleware_is_added() 0 23 2
1
<?php
2
3
namespace League\Tactician\Bundle\Tests\DependencyInjection\Compiler;
4
5
use League\Tactician\Bundle\DependencyInjection\Compiler\DoctrineMiddlewarePass;
6
use League\Tactician\Doctrine\ORM\RollbackOnlyTransactionMiddleware;
7
use League\Tactician\Doctrine\ORM\TransactionMiddleware;
8
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractCompilerPassTestCase;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Reference;
11
12
class DoctrineMiddlewarePassTest extends AbstractCompilerPassTestCase
13
{
14
    protected function registerCompilerPass(ContainerBuilder $container)
15
    {
16
        $container->addCompilerPass(new DoctrineMiddlewarePass());
17
    }
18
19
    public function test_registering_middleware_for_multiple_entity_managers()
20
    {
21
        if (!class_exists(TransactionMiddleware::class)) {
22
            $this->markTestSkipped('"league/tactician-doctrine" is not installed');
23
        }
24
25
        $this->setParameter(
26
            'doctrine.entity_managers',
27
            [
28
                'default' => 'doctrine.orm.default_entity_manager',
29
                'second' => 'doctrine.orm.second_entity_manager',
30
            ]
31
        );
32
        $this->setParameter('doctrine.default_entity_manager', 'default');
33
34
        $this->compile();
35
36
        $this->assertContainerBuilderHasService('tactician.middleware.doctrine.default', TransactionMiddleware::class);
37
        $this->assertContainerBuilderHasService('tactician.middleware.doctrine.second', TransactionMiddleware::class);
38
        $this->assertContainerBuilderHasServiceDefinitionWithArgument('tactician.middleware.doctrine.default', 0, new Reference('doctrine.orm.default_entity_manager'));
39
        $this->assertContainerBuilderHasServiceDefinitionWithArgument('tactician.middleware.doctrine.second', 0, new Reference('doctrine.orm.second_entity_manager'));
40
        $this->assertContainerBuilderHasAlias('tactician.middleware.doctrine', 'tactician.middleware.doctrine.default');
41
    }
42
43
    public function test_do_not_process_when_there_are_no_entity_managers()
44
    {
45
        if (!class_exists(TransactionMiddleware::class)) {
46
            $this->markTestSkipped('"league/tactician-doctrine" is not installed');
47
        }
48
49
        $this->compile();
50
51
        $this->assertContainerBuilderNotHasService('tactician.middleware.doctrine');
52
    }
53
54
    public function test_do_not_process_when_tactician_doctrine_is_not_installed()
55
    {
56
        if (class_exists(TransactionMiddleware::class)) {
57
            $this->markTestSkipped('"league/tactician-doctrine" is installed');
58
        }
59
60
        $this->setParameter('doctrine.entity_managers', ['default' => 'doctrine.orm.default_entity_manager']);
61
        $this->setParameter('doctrine.default_entity_manager', 'default');
62
63
        $this->compile();
64
65
        $this->assertContainerBuilderNotHasService('tactician.middleware.doctrine');
66
    }
67
68
    public function test_rollback_only_middleware_is_added()
69
    {
70
        if (!class_exists(RollbackOnlyTransactionMiddleware::class)) {
71
            $this->markTestSkipped('"league/tactician-doctrine" is not installed');
72
        }
73
74
        $this->setParameter(
75
            'doctrine.entity_managers',
76
            [
77
                'default' => 'doctrine.orm.default_entity_manager',
78
                'second' => 'doctrine.orm.second_entity_manager',
79
            ]
80
        );
81
        $this->setParameter('doctrine.default_entity_manager', 'default');
82
83
        $this->compile();
84
85
        $this->assertContainerBuilderHasService('tactician.middleware.doctrine_rollback_only.default', RollbackOnlyTransactionMiddleware::class);
86
        $this->assertContainerBuilderHasService('tactician.middleware.doctrine_rollback_only.second', RollbackOnlyTransactionMiddleware::class);
87
        $this->assertContainerBuilderHasServiceDefinitionWithArgument('tactician.middleware.doctrine_rollback_only.default', 0, new Reference('doctrine.orm.default_entity_manager'));
88
        $this->assertContainerBuilderHasServiceDefinitionWithArgument('tactician.middleware.doctrine_rollback_only.second', 0, new Reference('doctrine.orm.second_entity_manager'));
89
        $this->assertContainerBuilderHasAlias('tactician.middleware.doctrine_rollback_only', 'tactician.middleware.doctrine_rollback_only.default');
90
    }
91
}
92