From db9afebbdb7b12db06a9025a261299eba615c306 Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 11:40:52 +0200 Subject: [PATCH 01/10] chore fix: phpcs --- src/Command/ChangeLogCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Command/ChangeLogCommand.php b/src/Command/ChangeLogCommand.php index 87eea1b..785429b 100644 --- a/src/Command/ChangeLogCommand.php +++ b/src/Command/ChangeLogCommand.php @@ -139,7 +139,7 @@ function ($item) use ($major) { $v = substr($milestone, 0, (int)strpos($milestone, '.')); return $v == $major; - } + }, ); } From 7baccdd1b0b7c657707d3a6a37092a8b63cc898a Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 11:41:16 +0200 Subject: [PATCH 02/10] fix: add argument name to command --- src/Command/ResourcesMigrationCommand.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Command/ResourcesMigrationCommand.php b/src/Command/ResourcesMigrationCommand.php index 5907aaf..f695f10 100644 --- a/src/Command/ResourcesMigrationCommand.php +++ b/src/Command/ResourcesMigrationCommand.php @@ -16,6 +16,7 @@ use Cake\Console\Arguments; use Cake\Console\ConsoleIo; +use Cake\Console\ConsoleOptionParser; use Migrations\Command\BakeSimpleMigrationCommand; /** @@ -25,6 +26,19 @@ */ class ResourcesMigrationCommand extends BakeSimpleMigrationCommand { + /** + * @inheritDoc + */ + public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser + { + $parser->addArgument('name', [ + 'help' => 'Name of the migration', + 'required' => true, + ]); + + return $parser; + } + /** * Main migration file name. * From cc3c13dc382fa6054fe9530507af8312afe9f83a Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 11:41:57 +0200 Subject: [PATCH 03/10] fix: testFileName --- .../TestCase/Command/ResourcesMigrationCommandTest.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index 564b35a..70db6c4 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -15,6 +15,7 @@ namespace BEdita\DevTools\Test\TestCase\Shell\Task; use BEdita\DevTools\Command\ResourcesMigrationCommand; +use Cake\Console\Arguments; use Cake\Console\TestSuite\ConsoleIntegrationTestTrait; use Cake\Core\Plugin; use Cake\TestSuite\StringCompareTrait; @@ -81,7 +82,14 @@ public function testName(): void */ public function testFileName(): void { - $command = new ResourcesMigrationCommand(); + $command = new class () extends ResourcesMigrationCommand + { + public function setArgs(Arguments $args): void + { + $this->args = $args; + } + }; + $command->setArgs(new Arguments(['name' => 'MyMigration'], [], [])); $expected = $command->fileName('MyMigration'); sleep(2); $actual = $command->fileName('MyMigration'); From 4ed4520257f207e94c8c20451f63b9936ee6158c Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 12:53:56 +0200 Subject: [PATCH 04/10] fix: resources migration bake --- src/Command/ResourcesMigrationCommand.php | 16 ++++++++++++++++ .../Command/ResourcesMigrationCommandTest.php | 12 ++++++++---- tests/bootstrap.php | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/Command/ResourcesMigrationCommand.php b/src/Command/ResourcesMigrationCommand.php index f695f10..27f7327 100644 --- a/src/Command/ResourcesMigrationCommand.php +++ b/src/Command/ResourcesMigrationCommand.php @@ -34,6 +34,22 @@ public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionPar $parser->addArgument('name', [ 'help' => 'Name of the migration', 'required' => true, + ]) + ->addOption('force', [ + 'short' => 'f', + 'boolean' => true, + 'default' => 'false', + 'help' => 'Force overwriting existing files without prompting.', + ]) + ->addOption('connection', [ + 'short' => 'c', + 'default' => 'default', + 'help' => 'The datasource connection to get data from.', + ]) + ->addOption('source', [ + 'short' => 's', + 'default' => 'Migrations', + 'help' => 'The migrations folder.', ]); return $parser; diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index 70db6c4..e4c20fc 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -18,6 +18,7 @@ use Cake\Console\Arguments; use Cake\Console\TestSuite\ConsoleIntegrationTestTrait; use Cake\Core\Plugin; +use Cake\Routing\Router; use Cake\TestSuite\StringCompareTrait; use Cake\TestSuite\TestCase; @@ -44,7 +45,9 @@ class ResourcesMigrationCommandTest extends TestCase public function setUp(): void { parent::setUp(); - + Router::reload(); + $this->loadPlugins(['Bake']); + $this->setAppNamespace('BEdita\DevTools\Test\TestApp'); $this->_compareBasePath = Plugin::path('BEdita/DevTools') . 'tests' . DS . 'comparisons' . DS . 'Migrations' . DS; } @@ -118,14 +121,15 @@ public function testTemplate(): void */ public function testBake(): void { - $this->exec('bake resources_migration MyMigration'); + $this->exec('bake resources_migration MyMigration --force --connection test'); $this->assertExitCode(ResourcesMigrationCommand::CODE_SUCCESS); + $basePath = CONFIG . ResourcesMigrationCommand::DEFAULT_MIGRATION_FOLDER . DS; - $file = glob(CONFIG . ResourcesMigrationCommand::DEFAULT_MIGRATION_FOLDER . DS . '*_MyMigration.php'); + $file = glob($basePath . '*_MyMigration.php'); // @phpstan-ignore-next-line $phpFile = current($file); - $file = glob(CONFIG . ResourcesMigrationCommand::DEFAULT_MIGRATION_FOLDER . DS . '*_MyMigration.yml'); + $file = glob($basePath . '*_MyMigration.yml'); // @phpstan-ignore-next-line $yamlFile = current($file); diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 6b77ca5..609f2ef 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -84,6 +84,7 @@ 'url' => getenv('db_dsn'), 'timezone' => 'UTC', ]); +ConnectionManager::alias('test', 'default'); $app = new Application(dirname(__DIR__) . '/config'); $app->bootstrap(); From 8e09e4758fe9b7066e71d9938cb65a020412d70e Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 12:55:54 +0200 Subject: [PATCH 05/10] chore fix: test bake --- tests/TestCase/Command/ResourcesMigrationCommandTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index e4c20fc..d9d6e6c 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -121,7 +121,7 @@ public function testTemplate(): void */ public function testBake(): void { - $this->exec('bake resources_migration MyMigration --force --connection test'); + $this->exec('bake resources_migration MyMigration'); $this->assertExitCode(ResourcesMigrationCommand::CODE_SUCCESS); $basePath = CONFIG . ResourcesMigrationCommand::DEFAULT_MIGRATION_FOLDER . DS; From 54412f03d4b337d9d30488bd4ad3ee1022122bbf Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 12:58:14 +0200 Subject: [PATCH 06/10] chore fix: phpstan --- tests/TestCase/Command/ResourcesMigrationCommandTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index d9d6e6c..6e0d672 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -92,7 +92,7 @@ public function setArgs(Arguments $args): void $this->args = $args; } }; - $command->setArgs(new Arguments(['name' => 'MyMigration'], [], [])); + $command->setArgs(new Arguments([['MyMigration']], [], [])); $expected = $command->fileName('MyMigration'); sleep(2); $actual = $command->fileName('MyMigration'); From 7f4ce363c5f3a290ed95a9cfa3faed74d8469103 Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 13:07:03 +0200 Subject: [PATCH 07/10] fix: testBake new lines --- tests/TestCase/Command/ResourcesMigrationCommandTest.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index 6e0d672..5d120cb 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -139,7 +139,12 @@ public function testBake(): void $this->createdFiles[] = $phpFile; $this->createdFiles[] = $yamlFile; - $this->assertSameAsFile('testMyMigration.php', (string)$phpResult); - $this->assertSameAsFile('testMyMigration.yml', (string)$yamlResult); + $actual = trim(preg_replace('/\s\s+/', ' ', (string)$phpResult)); + $expected = trim(preg_replace('/\s\s+/', ' ', (string)file_get_contents($this->_compareBasePath . 'testMyMigration.php'))); + static::assertEquals($actual, $expected); + + $actual = trim(preg_replace('/\s\s+/', ' ', (string)$yamlResult)); + $expected = trim(preg_replace('/\s\s+/', ' ', (string)file_get_contents($this->_compareBasePath . 'testMyMigration.yml'))); + static::assertEquals($actual, $expected); } } From 51ceeb8bffcf32be0d67cca77000b1ea59c93591 Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 13:11:49 +0200 Subject: [PATCH 08/10] chore fix: phpstan --- .../Command/ResourcesMigrationCommandTest.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index 5d120cb..b660571 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -139,12 +139,21 @@ public function testBake(): void $this->createdFiles[] = $phpFile; $this->createdFiles[] = $yamlFile; - $actual = trim(preg_replace('/\s\s+/', ' ', (string)$phpResult)); - $expected = trim(preg_replace('/\s\s+/', ' ', (string)file_get_contents($this->_compareBasePath . 'testMyMigration.php'))); - static::assertEquals($actual, $expected); + self::assertSameMigration((string)$phpResult, (string)file_get_contents($this->_compareBasePath . 'testMyMigration.php')); + self::assertSameMigration((string)$yamlResult, (string)file_get_contents($this->_compareBasePath . 'testMyMigration.yml')); + } - $actual = trim(preg_replace('/\s\s+/', ' ', (string)$yamlResult)); - $expected = trim(preg_replace('/\s\s+/', ' ', (string)file_get_contents($this->_compareBasePath . 'testMyMigration.yml'))); + /** + * Assert that two migration files are the same. + * + * @param string $actual The actual migration + * @param string $expected The expected migration + * @return void + */ + private static function assertSameMigration(string $actual, string $expected): void + { + $actual = trim((string)preg_replace('/\s\s+/', ' ', $actual)); + $expected = trim((string)preg_replace('/\s\s+/', ' ', $expected)); static::assertEquals($actual, $expected); } } From 23dfaae65e5e16e95760d9f351c27117312c6699 Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 13:13:39 +0200 Subject: [PATCH 09/10] doc: code coverage ignore buildOptionParser --- src/Command/ResourcesMigrationCommand.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Command/ResourcesMigrationCommand.php b/src/Command/ResourcesMigrationCommand.php index 27f7327..68feffc 100644 --- a/src/Command/ResourcesMigrationCommand.php +++ b/src/Command/ResourcesMigrationCommand.php @@ -91,7 +91,8 @@ public function template(): string } /** - * @inheritDoc + * {@inheritDoc} + * {@codeCoverageIgnore} */ public function bake(string $name, Arguments $args, ConsoleIo $io): void { From 72031acd4f219fc7ed42b94507a6847dffd97b14 Mon Sep 17 00:00:00 2001 From: dante di domenico Date: Mon, 25 Aug 2025 13:16:06 +0200 Subject: [PATCH 10/10] fix: code coverage ignore --- src/Command/ResourcesMigrationCommand.php | 3 +-- tests/TestCase/Command/ResourcesMigrationCommandTest.php | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Command/ResourcesMigrationCommand.php b/src/Command/ResourcesMigrationCommand.php index 68feffc..27f7327 100644 --- a/src/Command/ResourcesMigrationCommand.php +++ b/src/Command/ResourcesMigrationCommand.php @@ -91,8 +91,7 @@ public function template(): string } /** - * {@inheritDoc} - * {@codeCoverageIgnore} + * @inheritDoc */ public function bake(string $name, Arguments $args, ConsoleIo $io): void { diff --git a/tests/TestCase/Command/ResourcesMigrationCommandTest.php b/tests/TestCase/Command/ResourcesMigrationCommandTest.php index b660571..98fb625 100644 --- a/tests/TestCase/Command/ResourcesMigrationCommandTest.php +++ b/tests/TestCase/Command/ResourcesMigrationCommandTest.php @@ -118,6 +118,7 @@ public function testTemplate(): void * * @return void * @covers ::bake() + * @covers ::buildOptionParser() */ public function testBake(): void {