Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
AccessInterceptorValueHolderFactoryTest.php
001 <?php
002 /*
003 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
004 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
005 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
006 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
007 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
008 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
009 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
010 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
011 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
012 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
013 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
014 *
015 * This software consists of voluntary contributions made by many individuals
016 * and is licensed under the MIT license.
017 */
018
019 namespace ProxyManagerTest\Factory;
020
021 use PHPUnit_Framework_TestCase;
022 use ProxyManager\Factory\AccessInterceptorValueHolderFactory;
023 use ProxyManager\Generator\ClassGenerator;
024 use ProxyManager\Generator\Util\UniqueIdentifierGenerator;
025 use stdClass;
026
027 /**
028 * Tests for {@see \ProxyManager\Factory\AccessInterceptorValueHolderFactory}
029 *
030 * @author Marco Pivetta <ocramius@gmail.com>
031 * @license MIT
032 *
033 * @group Coverage
034 */
035 class AccessInterceptorValueHolderFactoryTest extends PHPUnit_Framework_TestCase
036 {
037 /**
038 * @var \PHPUnit_Framework_MockObject_MockObject
039 */
040 protected $inflector;
041
042 /**
043 * @var \PHPUnit_Framework_MockObject_MockObject
044 */
045 protected $signatureChecker;
046
047 /**
048 * @var \ProxyManager\Signature\ClassSignatureGeneratorInterface|\PHPUnit_Framework_MockObject_MockObject
049 */
050 private $classSignatureGenerator;
051
052 /**
053 * @var \ProxyManager\Configuration|\PHPUnit_Framework_MockObject_MockObject
054 */
055 protected $config;
056
057 /**
058 * {@inheritDoc}
059 */
060 public function setUp()
061 {
062 $this->config = $this->getMock('ProxyManager\\Configuration');
063 $this->inflector = $this->getMock('ProxyManager\\Inflector\\ClassNameInflectorInterface');
064 $this->signatureChecker = $this->getMock('ProxyManager\\Signature\\SignatureCheckerInterface');
065 $this->classSignatureGenerator = $this->getMock('ProxyManager\\Signature\\ClassSignatureGeneratorInterface');
066
067 $this
068 ->config
069 ->expects($this->any())
070 ->method('getClassNameInflector')
071 ->will($this->returnValue($this->inflector));
072
073 $this
074 ->config
075 ->expects($this->any())
076 ->method('getSignatureChecker')
077 ->will($this->returnValue($this->signatureChecker));
078
079 $this
080 ->config
081 ->expects($this->any())
082 ->method('getClassSignatureGenerator')
083 ->will($this->returnValue($this->classSignatureGenerator));
084 }
085
086 /**
087 * {@inheritDoc}
088 *
089 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::__construct
090 */
091 public function testWithOptionalFactory()
092 {
093 $factory = new AccessInterceptorValueHolderFactory();
094 $this->assertAttributeNotEmpty('configuration', $factory);
095 $this->assertAttributeInstanceOf('ProxyManager\Configuration', 'configuration', $factory);
096 }
097
098 /**
099 * {@inheritDoc}
100 *
101 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::__construct
102 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::createProxy
103 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::getGenerator
104 */
105 public function testWillSkipAutoGeneration()
106 {
107 $instance = new stdClass();
108
109 $this
110 ->inflector
111 ->expects($this->once())
112 ->method('getProxyClassName')
113 ->with('stdClass')
114 ->will($this->returnValue('ProxyManagerTestAsset\\AccessInterceptorValueHolderMock'));
115
116 $factory = new AccessInterceptorValueHolderFactory($this->config);
117 /* @var $proxy \ProxyManagerTestAsset\AccessInterceptorValueHolderMock */
118 $proxy = $factory->createProxy($instance, array('foo'), array('bar'));
119
120 $this->assertInstanceOf('ProxyManagerTestAsset\\AccessInterceptorValueHolderMock', $proxy);
121 $this->assertSame($instance, $proxy->instance);
122 $this->assertSame(array('foo'), $proxy->prefixInterceptors);
123 $this->assertSame(array('bar'), $proxy->suffixInterceptors);
124 }
125
126 /**
127 * {@inheritDoc}
128 *
129 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::__construct
130 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::createProxy
131 * @covers \ProxyManager\Factory\AccessInterceptorValueHolderFactory::getGenerator
132 *
133 * NOTE: serious mocking going on in here (a class is generated on-the-fly) - careful
134 */
135 public function testWillTryAutoGeneration()
136 {
137 $instance = new stdClass();
138 $proxyClassName = UniqueIdentifierGenerator::getIdentifier('bar');
139 $generator = $this->getMock('ProxyManager\GeneratorStrategy\\GeneratorStrategyInterface');
140 $autoloader = $this->getMock('ProxyManager\\Autoloader\\AutoloaderInterface');
141
142 $this->config->expects($this->any())->method('getGeneratorStrategy')->will($this->returnValue($generator));
143 $this->config->expects($this->any())->method('getProxyAutoloader')->will($this->returnValue($autoloader));
144
145 $generator
146 ->expects($this->once())
147 ->method('generate')
148 ->with(
149 $this->callback(
150 function (ClassGenerator $targetClass) use ($proxyClassName) {
151 return $targetClass->getName() === $proxyClassName;
152 }
153 )
154 );
155
156 // simulate autoloading
157 $autoloader
158 ->expects($this->once())
159 ->method('__invoke')
160 ->with($proxyClassName)
161 ->will(
162 $this->returnCallback(
163 function () use ($proxyClassName) {
164 eval(
165 'class ' . $proxyClassName
166 . ' extends \\ProxyManagerTestAsset\\AccessInterceptorValueHolderMock {}'
167 );
168 }
169 )
170 );
171
172 $this
173 ->inflector
174 ->expects($this->once())
175 ->method('getProxyClassName')
176 ->with('stdClass')
177 ->will($this->returnValue($proxyClassName));
178
179 $this
180 ->inflector
181 ->expects($this->once())
182 ->method('getUserClassName')
183 ->with('stdClass')
184 ->will($this->returnValue('ProxyManagerTestAsset\\LazyLoadingMock'));
185
186 $this->signatureChecker->expects($this->atLeastOnce())->method('checkSignature');
187 $this->classSignatureGenerator->expects($this->once())->method('addSignature')->will($this->returnArgument(0));
188
189 $factory = new AccessInterceptorValueHolderFactory($this->config);
190 /* @var $proxy \ProxyManagerTestAsset\AccessInterceptorValueHolderMock */
191 $proxy = $factory->createProxy($instance, array('foo'), array('bar'));
192
193 $this->assertInstanceOf($proxyClassName, $proxy);
194 $this->assertSame($instance, $proxy->instance);
195 $this->assertSame(array('foo'), $proxy->prefixInterceptors);
196 $this->assertSame(array('bar'), $proxy->suffixInterceptors);
197 }
198 }
199