Completed
Pull Request — master (#605)
by
unknown
01:50
created

CacheFactoryTest::testCreatePredisCache()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 26
rs 8.8571
cc 1
eloc 16
nc 1
nop 0
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the MIT license. For more information, see
17
 * <http://www.doctrine-project.org>.
18
 */
19
20
namespace DoctrineModuleTest\Service;
21
22
use Doctrine\Common\Cache\ChainCache;
23
use DoctrineModule\Service\CacheFactory;
24
use PHPUnit_Framework_TestCase as BaseTestCase;
25
use Zend\ServiceManager\ServiceManager;
26
27
/**
28
 * Test for {@see \DoctrineModule\Service\CacheFactory}
29
 *
30
 * @author Marco Pivetta <[email protected]>
31
 */
32
class CacheFactoryTest extends BaseTestCase
33
{
34
    /**
35
     * @covers \DoctrineModule\Service\CacheFactory::createService
36
     */
37
    public function testWillSetNamespace()
38
    {
39
        $factory        = new CacheFactory('foo');
40
        $serviceManager = new ServiceManager();
41
        $serviceManager->setService(
42
            'Configuration',
43
            [
44
                 'doctrine' => [
45
                     'cache' => [
46
                         'foo' => [
47
                             'namespace' => 'bar',
48
                         ],
49
                     ],
50
                 ],
51
            ]
52
        );
53
54
        /* @var $service \Doctrine\Common\Cache\ArrayCache */
55
        $service = $factory->createService($serviceManager);
56
57
        $this->assertInstanceOf('Doctrine\\Common\\Cache\\ArrayCache', $service);
58
        $this->assertSame('bar', $service->getNamespace());
59
    }
60
61
    /**
62
     * @covers \DoctrineModule\Service\CacheFactory::createService
63
     * @group 547
64
     */
65
    public function testCreateZendCache()
66
    {
67
        $factory        = new CacheFactory('phpunit');
68
        $serviceManager = new ServiceManager();
69
        $serviceManager->setAlias('config', 'Configuration');
70
        $serviceManager->setService(
71
            'Configuration',
72
            [
73
                'doctrine' => [
74
                    'cache' => [
75
                        'phpunit' => [
76
                            'class' => 'DoctrineModule\Cache\ZendStorageCache',
77
                            'instance' => 'my-zend-cache',
78
                            'namespace' => 'DoctrineModule',
79
                        ],
80
                    ],
81
                ],
82
                'caches' => [
83
                    'my-zend-cache' => [
84
                        'adapter' => [
85
                            'name' => 'blackhole',
86
                        ],
87
                    ],
88
                ],
89
            ]
90
        );
91
        $serviceManager->addAbstractFactory('Zend\Cache\Service\StorageCacheAbstractServiceFactory');
92
93
        $cache = $factory->createService($serviceManager);
94
95
        $this->assertInstanceOf('DoctrineModule\Cache\ZendStorageCache', $cache);
96
    }
97
98
    public function testCreatePredisCache()
99
    {
100
        $factory        = new CacheFactory('predis');
101
        $serviceManager = new ServiceManager();
102
        $serviceManager->setService(
103
            'Configuration',
104
            [
105
                'doctrine' => [
106
                    'cache' => [
107
                        'predis' => [
108
                            'class' => 'Doctrine\Common\Cache\PredisCache',
109
                            'instance' => 'my_predis_alias',
110
                            'namespace' => 'DoctrineModule',
111
                        ],
112
                    ],
113
                ],
114
            ]
115
        );
116
        $serviceManager->setService(
117
            'my_predis_alias',
118
            $this->getMock('Predis\ClientInterface')
119
        );
120
        $cache = $factory->createService($serviceManager);
121
122
        $this->assertInstanceOf('Doctrine\Common\Cache\PredisCache', $cache);
123
    }
124
125
    public function testUseServiceFactory()
126
    {
127
        $factory        = new CacheFactory('chain');
128
        $serviceManager = new ServiceManager();
129
        $serviceManager->setService(
130
            'Configuration',
131
            [
132
                'doctrine' => [
133
                    'cache' => [
134
                        'chain' => [
135
                            'class' => ChainCache::class,
136
                        ],
137
                    ],
138
                ],
139
            ]
140
        );
141
142
        $mock = $this->getMock(ChainCache::class);
143
144
        $serviceManager->setFactory(ChainCache::class, function () use ($mock) {
145
            return $mock;
146
        });
147
148
        $cache = $factory->createService($serviceManager);
149
150
        $this->assertSame($mock, $cache);
151
    }
152
}
153