From 025aa1b3ba87450bd662fe6a46704651c242aead Mon Sep 17 00:00:00 2001 From: Juan Pablo Ramirez Date: Sat, 13 Mar 2021 00:48:20 +0100 Subject: [PATCH] Alias connections before running migrations --- src/Migrator.php | 6 +++++- .../20200208100000_app_migration.php | 11 +++++++++- .../TestApp/src/Model/Table/ArticlesTable.php | 20 +++++++++++++++++++ tests/TestCase/MigratorTest.php | 10 +++++++++- tests/bootstrap.php | 11 +++++++--- 5 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 tests/TestApp/src/Model/Table/ArticlesTable.php diff --git a/src/Migrator.php b/src/Migrator.php index 45caf51..db6232b 100644 --- a/src/Migrator.php +++ b/src/Migrator.php @@ -46,6 +46,10 @@ public static function migrate(array $config = []): void { $migrator = new static(); + // Make sure that the connections are aliased, in case + // the migrations invoke the table registry. + $migrator->getFixtureManager()->aliasConnections(); + $migrator ->prepareConfig($config) ->dropTablesForMissingMigrations() @@ -129,4 +133,4 @@ protected function getFixtureManager(): FixtureManager { return $this->fixtureManager; } -} \ No newline at end of file +} \ No newline at end of file diff --git a/tests/TestApp/config/Migrations/20200208100000_app_migration.php b/tests/TestApp/config/Migrations/20200208100000_app_migration.php index 60ef3f5..b734344 100644 --- a/tests/TestApp/config/Migrations/20200208100000_app_migration.php +++ b/tests/TestApp/config/Migrations/20200208100000_app_migration.php @@ -17,7 +17,16 @@ class AppMigration extends AbstractMigration { public function up() - {} + { + $this->table('articles') + ->addPrimaryKey(['id']) + ->addColumn('title', 'string', [ + 'limit' => 128, + 'null' => false, + ]) + ->addTimestamps('created', 'modified') + ->create(); + } public function down() {} diff --git a/tests/TestApp/src/Model/Table/ArticlesTable.php b/tests/TestApp/src/Model/Table/ArticlesTable.php new file mode 100644 index 0000000..5316d8d --- /dev/null +++ b/tests/TestApp/src/Model/Table/ArticlesTable.php @@ -0,0 +1,20 @@ +assertSame(['FooMigration'], $fooPluginMigrations); $this->assertSame(['BarMigration'], $barPluginMigrations); } -} \ No newline at end of file + + public function testTableRegistryConnectionName() + { + $Articles = TableRegistry::getTableLocator()->get('Articles'); + ConnectionManager::getConfigOrFail('default'); + $this->assertSame('test', $Articles->getConnection()->configName()); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 2605adb..fc483e6 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,6 +1,7 @@ 'BarPlugin']; -\Cake\Datasource\ConnectionManager::setConfig('test_2', $dbConnection); +ConnectionManager::setConfig('test_2', $dbConnection); $dbConnection['migrations'] = true; -\Cake\Datasource\ConnectionManager::setConfig('test_3', $dbConnection); +ConnectionManager::setConfig('test_3', $dbConnection);