Completed
Push — master ( 34dfbf...ca2322 )
by Ross
36s
created

test_rollback_only_middleware_is_added()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 23
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 23
rs 9.0856
cc 2
eloc 14
nc 2
nop 0
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