public function testFind2() { $search = new VersionPathSearch(new VersionReader(new AnnotationReader())); $result = $search->find('Evispa\\ObjectMigration\\Tests\\Mock\\MockCodeV1', 'Evispa\\ObjectMigration\\Tests\\Mock\\MockCodeV4'); $this->assertEquals('Evispa\\ObjectMigration\\Tests\\Mock\\MockCodeV1', $result[0]->action->method->class); $this->assertEquals('toCodeV4', $result[0]->name); }
/** * Get object from other version. * * @param mixed $otherObject Object instance. * * @throws Exception\VersionPathNotFoundException * * @return mixed Migrated object. */ public function migrateFrom($otherObject) { $otherObjectClass = get_class($otherObject); // same object no migrations needed if ($otherObjectClass === $this->className) { return $otherObject; } $versionPath = new VersionPathSearch($this->reader); $migrations = $versionPath->find($otherObjectClass, $this->className); if (count($migrations) === 0) { throw new VersionPathNotFoundException($otherObjectClass, $this->className); } foreach ($migrations as $migration) { $otherObject = $migration->action->run($otherObject, $this->options); } return $otherObject; }