/** * Load an *Extension or *ExtensionInterface class. If it does not exist, create a stub file and load it. * * @param string $className * @return void */ public function load($className) { if (!class_exists($className)) { if (!$this->isExtension($className) && !$this->isExtensionInterface($className)) { return false; } $resultFileName = $this->generatorIo->generateResultFileName($className); if (!$this->generatorIo->fileExists($resultFileName)) { $this->generatorIo->makeResultFileDirectory($className); $classNameParts = explode('\\', $className); /* Split the type name and namespace for the file's contents. */ $justTypeName = $classNameParts[count($classNameParts) - 1]; unset($classNameParts[count($classNameParts) - 1]); $namespace = implode('\\', $classNameParts); if ($this->isExtension($className)) { $content = "namespace {$namespace};\n\nclass {$justTypeName} implements " . "{$justTypeName}Interface\n{\n\n}"; } else { if ($this->isExtensionInterface($className)) { $content = "namespace {$namespace};\n\ninterface {$justTypeName} extends " . "\\Magento\\Framework\\Api\\ExtensionAttributesInterface \n{\n\n}"; } } $this->generatorIo->writeResultFile($resultFileName, $content); } include $resultFileName; } return false; }
/** * @dataProvider testWriteResultFileAlreadyExistsDataProvider */ public function testWriteResultFileAlreadyExists($resultFileName, $fileExists, $exceptionDuringRename, $success) { $this->_filesystemDriverMock->expects($this->once())->method('filePutContents')->with($this->stringContains($resultFileName), "<?php\n" . self::FILE_CONTENT)->willReturn(true); $isExistsInvocationCount = $exceptionDuringRename ? 1 : 0; $this->_filesystemDriverMock->expects($this->exactly($isExistsInvocationCount))->method('isExists')->willReturn($fileExists); if (!$exceptionDuringRename) { $renameMockEvent = $this->returnValue(true); } else { if ($fileExists) { $renameMockEvent = $this->throwException(new FileSystemException(new Phrase('File already exists'))); } else { $exceptionMessage = 'Some error renaming file'; $renameMockEvent = $this->throwException(new FileSystemException(new Phrase($exceptionMessage))); $this->setExpectedException('\\Magento\\Framework\\Exception\\FileSystemException', $exceptionMessage); } } $this->_filesystemDriverMock->expects($this->once())->method('rename')->with($this->stringContains($resultFileName), $resultFileName)->will($renameMockEvent); //Throw exception or return true $this->assertSame($success, $this->_object->writeResultFile($resultFileName, self::FILE_CONTENT)); }
/** * Generation template method * * @return bool */ public function generate() { try { if ($this->_validateData()) { $sourceCode = $this->_generateCode(); if ($sourceCode) { $fileName = $this->_ioObject->getResultFileName($this->_getResultClassName()); $this->_ioObject->writeResultFile($fileName, $sourceCode); return true; } else { $this->_addError('Can\'t generate source code.'); } } } catch (\Exception $e) { $this->_addError($e->getMessage()); } return false; }
public function testWriteResultFile() { $this->_filesystemDriverMock->expects($this->once())->method('filePutContents')->with($this->stringContains(self::FILE_NAME), "<?php\n" . self::FILE_CONTENT)->willReturn(true); $this->_filesystemDriverMock->expects($this->once())->method('rename')->with($this->stringContains(self::FILE_NAME), self::FILE_NAME)->willReturn(true); $this->assertTrue($this->_object->writeResultFile(self::FILE_NAME, self::FILE_CONTENT)); }
public function testWriteResultFile() { $this->_filesystemDriverMock->expects($this->once())->method('filePutContents')->with($this->equalTo(self::FILE_NAME), $this->equalTo("<?php\n" . self::FILE_CONTENT))->will($this->returnValue(true)); $this->assertTrue($this->_object->writeResultFile(self::FILE_NAME, self::FILE_CONTENT)); }