Completed
Pull Request — master (#30)
by Matthew
19:54
created

RedisCompilerPassTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 5
dl 0
loc 103
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testProcess() 0 9 1
B testSncRedis() 0 36 1
B testPredis() 0 32 1
A testPhpRedis() 0 20 1
1
<?php
2
3
namespace Dtc\QueueBundle\Tests\DependencyInjection\Compiler;
4
5
use Dtc\QueueBundle\DependencyInjection\DtcQueueExtension;
6
use Dtc\QueueBundle\Redis\JobManager;
7
use Dtc\QueueBundle\DependencyInjection\Compiler\RedisCompilerPass;
8
use PHPUnit\Framework\TestCase;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Definition;
11
12
class RedisCompilerPassTest extends TestCase
13
{
14
    public function testProcess()
15
    {
16
        $container = new ContainerBuilder();
17
18
        $count = count($container->getDefinitions());
19
        $compilerPass = new RedisCompilerPass();
20
        $compilerPass->process($container);
21
        self::assertEquals($count, count($container->getDefinitions()));
22
    }
23
24
    public function testSncRedis()
25
    {
26
        $container = new ContainerBuilder();
27
        $count = count($container->getDefinitions());
28
        $definition = new Definition();
29
        $definition->setClass(JobManager::class);
30
        $container->addDefinitions(['dtc_queue.job_manager.redis' => $definition]);
31
        $container->setParameter('dtc_queue.redis.snc_redis.type', 'predis');
32
        $container->setParameter('dtc_queue.redis.snc_redis.alias', 'default');
33
        $compilerPass = new RedisCompilerPass();
34
        $compilerPass->process($container);
35
36
        self::assertGreaterThan($count, count($container->getDefinitions()));
37
        self::assertTrue($container->hasDefinition('dtc_queue.predis'));
38
39
        $definition = $container->getDefinition('dtc_queue.job_manager.redis');
40
        self::assertNotEmpty($definition->getMethodCalls());
41
        self::assertCount(1, $definition->getMethodCalls());
42
43
        $container = new ContainerBuilder();
44
        $count = count($container->getDefinitions());
45
        $definition = new Definition();
46
        $definition->setClass(JobManager::class);
47
        $container->addDefinitions(['dtc_queue.job_manager.redis' => $definition]);
48
        $container->setParameter('dtc_queue.redis.snc_redis.type', 'phpredis');
49
        $container->setParameter('dtc_queue.redis.snc_redis.alias', 'default');
50
        $compilerPass = new RedisCompilerPass();
51
        $compilerPass->process($container);
52
53
        self::assertGreaterThan($count, count($container->getDefinitions()));
54
        self::assertTrue($container->hasDefinition('dtc_queue.phpredis'));
55
56
        $definition = $container->getDefinition('dtc_queue.job_manager.redis');
57
        self::assertNotEmpty($definition->getMethodCalls());
58
        self::assertCount(1, $definition->getMethodCalls());
59
    }
60
61
    public function testPredis()
62
    {
63
        $container = new ContainerBuilder();
64
        $definition = new Definition();
65
        $definition->setClass(JobManager::class);
66
        $container->addDefinitions(['dtc_queue.job_manager.redis' => $definition]);
67
        $container->setParameter('dtc_queue.redis.predis.dsn', 'redis://localhost');
68
        $compilerPass = new RedisCompilerPass();
69
        $compilerPass->process($container);
70
71
        self::assertGreaterThan($count, count($container->getDefinitions()));
0 ignored issues
show
Bug introduced by
The variable $count does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
72
        self::assertTrue($container->hasDefinition('dtc_queue.predis'));
73
74
        $definition = $container->getDefinition('dtc_queue.job_manager.redis');
75
        self::assertNotEmpty($definition->getMethodCalls());
76
        self::assertCount(1, $definition->getMethodCalls());
77
78
        $container = new ContainerBuilder();
79
        $definition = new Definition();
80
        $definition->setClass(JobManager::class);
81
        $container->addDefinitions(['dtc_queue.job_manager.redis' => $definition]);
82
        $container->setParameter('dtc_queue.redis.predis.connection_parameters', ['host' => 'localhost', 'port' => 6379]);
83
        $compilerPass = new RedisCompilerPass();
84
        $compilerPass->process($container);
85
86
        self::assertGreaterThan($count, count($container->getDefinitions()));
87
        self::assertTrue($container->hasDefinition('dtc_queue.predis'));
88
89
        $definition = $container->getDefinition('dtc_queue.job_manager.redis');
90
        self::assertNotEmpty($definition->getMethodCalls());
91
        self::assertCount(1, $definition->getMethodCalls());
92
    }
93
94
    public function testPhpRedis()
95
    {
96
        $container = new ContainerBuilder();
97
        $dtcQueueExtension = new DtcQueueExtension();
98
        $configs = ['config' => ['redis' => ['phpredis' => ['host' => 'localhost']]]];
99
        $dtcQueueExtension->load($configs, $container);
100
101
        $definition = new Definition();
102
        $definition->setClass(JobManager::class);
103
        $container->addDefinitions(['dtc_queue.job_manager.redis' => $definition]);
104
        $compilerPass = new RedisCompilerPass();
105
        $compilerPass->process($container);
106
107
        self::assertGreaterThan($count, count($container->getDefinitions()));
0 ignored issues
show
Bug introduced by
The variable $count does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
108
        self::assertTrue($container->hasDefinition('dtc_queue.phpredis'));
109
110
        $definition = $container->getDefinition('dtc_queue.job_manager.redis');
111
        self::assertNotEmpty($definition->getMethodCalls());
112
        self::assertCount(1, $definition->getMethodCalls());
113
    }
114
}
115