/** * Generates a new MockData object will all required information for creating mock files * * @param EntityData $entity * @param ConfigData $config * @return MockData */ public function generateMockDataObject(EntityData $entity, ConfigData $config) { $className = $this->formatMockClassName($entity->getClassName(), $config->getMockFileNameFormat()); $savePath = $this->determineMockFileSavePath($entity->getFileData()->getFileDirectory(), $config); $utSavePath = $this->determineMockUnitTestFileSavePath($entity->getFileData()->getFileDirectory(), $config); $namespace = $this->generateMockFileNamespace($savePath, $config); $utNamespace = $this->generateMockFileNamespace($utSavePath, $config); $obj = new MockData(); $obj->setClassName($className)->setClassNamespace($namespace)->setUtClassNamespace($utNamespace)->getFileData()->setFileName($className . '.php')->setFileDirectory($savePath)->setFullFilePath($savePath . $className . '.php'); $obj->getUtFileData()->setFileName($className . 'Test.php')->setFileDirectory($utSavePath)->setFullFilePath($utSavePath . $className . 'Test.php'); $obj = $this->generateMockDataDetails($obj, $entity); return $obj; }
/** * Gathers the target class details * * @param EntityData $obj * @return EntityData */ private function getClassDetails(EntityData $obj) { $obj->setHasConstructor($this->hasConstructor($obj->getReflectionClass()))->addUseStatements($this->getClassUseStatements($obj->getFileData()->getFullFilePath()))->setExtends($this->getExtendsClass($obj->getReflectionClass()))->addImplements($this->getImplementsClasses($obj->getReflectionClass()))->addMethods($this->methodWorker->getClassMethods($obj->getReflectionClass()))->addProperties($this->propertyWorker->getClassProperties($obj->getReflectionClass())); return $obj; }