diff --git a/ide.json b/ide.json index 07a2ae46..742e09a1 100644 --- a/ide.json +++ b/ide.json @@ -18,5 +18,29 @@ } ] } + ], + "completions": [ + { + "complete": "directoryFiles", + "condition": [ + { + "classFqn": [ + "DragonCode\\LaravelDeployOperations\\Helpers\\OperationHelper" + ], + "methodNames": [ + "run" + ], + "place": "parameter", + "parameters": [ + 1 + ] + } + ], + "options": { + "directory": "operations", + "suffixToClear": ".php", + "recursive": true + } + } ] } diff --git a/src/Helpers/OperationHelper.php b/src/Helpers/OperationHelper.php new file mode 100644 index 00000000..202d3379 --- /dev/null +++ b/src/Helpers/OperationHelper.php @@ -0,0 +1,23 @@ +when($path, fn (Collection $items) => $items->put('--' . Options::Path, $path)) + ->when($realpath, fn (Collection $items) => $items->put('--' . Options::Realpath, true)) + ->all(); + + Artisan::call(OperationsCommand::class, $parameters); + } +} diff --git a/tests/Helpers/OperationTest.php b/tests/Helpers/OperationTest.php new file mode 100644 index 00000000..f941a355 --- /dev/null +++ b/tests/Helpers/OperationTest.php @@ -0,0 +1,52 @@ +assertDatabaseDoesntTable($this->table); + + $this->artisan(Names::Install)->assertExitCode(0); + + $this->assertDatabaseHasTable($this->table); + $this->assertDatabaseCount($this->table, 0); + + $this->artisan(Names::Make, ['name' => 'TestMigration'])->assertExitCode(0); + + OperationHelper::run(); + + $this->assertDatabaseCount($this->table, 1); + $this->assertDatabaseOperationHas($this->table, 'test_migration'); + } + + public function testPath(): void + { + $this->copyFiles(); + + $table = 'test'; + + $path = 'sub_path/2021_12_15_205804_baz.php'; + + $this->artisan(Names::Install)->assertExitCode(0); + + $this->assertDatabaseCount($table, 0); + $this->assertDatabaseCount($this->table, 0); + $this->assertDatabaseOperationDoesntLike($this->table, 'baz'); + + OperationHelper::run($path); + + $this->assertDatabaseCount($table, 1); + $this->assertDatabaseCount($this->table, 1); + $this->assertDatabaseOperationHas($this->table, 'baz'); + + $this->assertSame('sub_path/2021_12_15_205804_baz', $this->table()->first()->operation); + } +}