/** * @covers \ProxyManager\GeneratorStrategy\FileWriterGeneratorStrategy::__construct * @covers \ProxyManager\GeneratorStrategy\FileWriterGeneratorStrategy::generate */ public function testGenerate() { $locator = $this->getMock('ProxyManager\\FileLocator\\FileLocatorInterface'); $generator = new FileWriterGeneratorStrategy($locator); $tmpFile = sys_get_temp_dir() . '/FileWriterGeneratorStrategyTest' . uniqid() . '.php'; $namespace = 'Foo'; $className = UniqueIdentifierGenerator::getIdentifier('Bar'); $fqcn = $namespace . '\\' . $className; $locator->expects($this->any())->method('getProxyFileName')->with($fqcn)->will($this->returnValue($tmpFile)); $body = $generator->generate(new ClassGenerator($fqcn)); $this->assertGreaterThan(0, strpos($body, $className)); $this->assertFalse(class_exists($fqcn, false)); $this->assertTrue(file_exists($tmpFile)); require $tmpFile; $this->assertTrue(class_exists($fqcn, false)); }
public function testWhenFailingAllTemporaryFilesAreRemoved() { $tmpDirPath = sys_get_temp_dir() . '/' . uniqid('noTempFilesLeftBehind', true); mkdir($tmpDirPath); /* @var $locator \ProxyManager\FileLocator\FileLocatorInterface|\PHPUnit_Framework_MockObject_MockObject */ $locator = $this->getMock('ProxyManager\\FileLocator\\FileLocatorInterface'); $generator = new FileWriterGeneratorStrategy($locator); $tmpFile = $tmpDirPath . '/' . uniqid('FileWriterGeneratorStrategyFailedFileMoveTest', true) . '.php'; $namespace = 'Foo'; $className = UniqueIdentifierGenerator::getIdentifier('Bar'); $fqcn = $namespace . '\\' . $className; $locator->expects($this->any())->method('getProxyFileName')->with($fqcn)->will($this->returnValue($tmpFile)); mkdir($tmpFile); try { $generator->generate(new ClassGenerator($fqcn)); $this->fail('An exception was supposed to be thrown'); } catch (FileNotWritableException $exception) { rmdir($tmpFile); $this->assertEquals(array('.', '..'), scandir($tmpDirPath)); } }