/**
  * 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;
 }
Beispiel #2
0
 /**
  * @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));
 }
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #4
0
 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));
 }
Beispiel #5
0
 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));
 }