/** * @param MigrationsStatusCommand $command */ public function migrationsStatus(MigrationsStatusCommand $command) { try { $status = $this->migrator->status(); $latestMigration = $status->latestMigration(); $rows = array(array(' Current Version', $latestMigration ? sprintf('<c2>%s (%s)</c2>', $latestMigration->version()->__toString(), $latestMigration->createdAt()->format('Y-m-d H:i:s')) : '<c2>0</c2>'), array(' Latest Version', $status->latestAvailableVersion() ? '<c2>' . $status->latestAvailableVersion()->__toString() . '</c2>' : '<c2>none</c2>'), array(' Next Version', $status->nextAvailableVersion() ? '<c2>' . $status->nextAvailableVersion()->__toString() . '</c2>' : '<c2>none</c2>'), array(' Executed Migrations', '<c2>' . $status->numExecutedMigrations() . '</c2>'), array(' Available Migrations', '<c2>' . $status->numAvailableMigrations() . '</c2>'), array(' New Migrations', '<c2>' . $status->numNewMigrations() . '</c2>')); $table = new Table(TableStyle::borderless()); foreach ($rows as $row) { $table->addRow($row); } $table->render($command->getIo()); } catch (\Exception $e) { $command->getIo()->writeLine('<error>' . $e->getMessage() . '</error>'); } }
/** * Test MigrationsStatus method. */ public function testMigrationsStatus() { $this->migrationsDirectory = __DIR__ . '/../EmptyMigrations'; $this->given($service = $this->createService())->and($command = new MigrationsStatusCommand())->and($command->setIo($this->getIO()))->when($service->migrationsStatus($command))->then()->string($this->output->fetch())->contains(' Current Version <c2>0</c2>')->contains(' Latest Version <c2>none</c2>')->contains(' Next Version <c2>none</c2>')->contains(' Executed Migrations <c2>0</c2>')->contains(' Available Migrations <c2>0</c2>')->contains(' New Migrations <c2>0</c2>'); $this->migrationsDirectory = __DIR__ . '/../../../Fixtures/Event'; $this->given($service = $this->createService())->and($command = new MigrationsStatusCommand())->and($command->setIo($this->getIO()))->when($service->migrationsStatus($command))->then()->string($this->output->fetch())->contains('Invalid migration directory'); $this->migrationsDirectory = __DIR__ . '/../../../Fixtures/Migrations'; $this->given($service = $this->createService())->and($command = new MigrationsStatusCommand())->and($command->setIo($this->getIO()))->when($service->migrationsStatus($command))->then()->string($this->output->fetch())->contains(' Current Version <c2>0</c2>')->contains(' Latest Version <c2>1.1.0</c2>')->contains(' Next Version <c2>0.1.0</c2>')->contains(' Executed Migrations <c2>0</c2>')->contains(' Available Migrations <c2>4</c2>')->contains(' New Migrations <c2>4</c2>'); require_once __DIR__ . '/../../../Fixtures/BlogEventSourced.php'; $aggregates = [PostEventSourced::class, \BlogEventSourced::class]; $migratorStore = new InMemoryMigrationStore(); $migratorStore->persist(new Migration($aggregates, Version::fromString('0.1.0'), \DateTime::createFromFormat('Y-m-d H:i:s', '2016-08-26 14:12:00'))); $migratorStore->persist(new Migration($aggregates, Version::fromString('0.2.0'), \DateTime::createFromFormat('Y-m-d H:i:s', '2016-09-01 18:30:00'))); $migrator = new Migrator($this->getClassMetadataFactory(), $migratorStore, new InMemoryEventStore(), $this->migrationsDirectory); $service = new MigrationsService($migrator); $this->given($command = new MigrationsStatusCommand())->and($command->setIo($this->getIO()))->when($service->migrationsStatus($command))->then()->string($this->output->fetch())->contains(' Current Version <c2>0.2.0 (2016-09-01 18:30:00)</c2>')->contains(' Latest Version <c2>1.1.0</c2>')->contains(' Next Version <c2>1.0.0</c2>')->contains(' Executed Migrations <c2>2</c2>')->contains(' Available Migrations <c2>4</c2>')->contains(' New Migrations <c2>2</c2>'); }