From b49d80525b2bb082306dbe2936de885bf2a6bd30 Mon Sep 17 00:00:00 2001 From: lotyp Date: Sat, 3 Jun 2023 15:50:48 +0300 Subject: [PATCH] feat: add refresh database testing helper --- src/Testing/RefreshDatabase.php | 34 +++++++++++++++++++++++++++++++++ tests/src/TestCase.php | 27 ++------------------------ 2 files changed, 36 insertions(+), 25 deletions(-) create mode 100644 src/Testing/RefreshDatabase.php diff --git a/src/Testing/RefreshDatabase.php b/src/Testing/RefreshDatabase.php new file mode 100644 index 00000000..e71f37b0 --- /dev/null +++ b/src/Testing/RefreshDatabase.php @@ -0,0 +1,34 @@ +database('default'); + + /** @var Table $table */ + foreach ($database->getTables() as $table) { + $schema = $table->getSchema(); + foreach ($schema->getForeignKeys() as $foreign) { + $schema->dropForeignKey($foreign->getColumns()); + } + + $schema->save(HandlerInterface::DROP_FOREIGN_KEYS); + } + + /** @var Table $table */ + foreach ($database->getTables() as $table) { + $schema = $table->getSchema(); + $schema->declareDropped(); + $schema->save(); + } + } +} diff --git a/tests/src/TestCase.php b/tests/src/TestCase.php index e5db0277..ca033663 100644 --- a/tests/src/TestCase.php +++ b/tests/src/TestCase.php @@ -4,9 +4,6 @@ namespace WayOfDev\Tests; -use Cycle\Database\DatabaseProviderInterface; -use Cycle\Database\Driver\HandlerInterface; -use Cycle\Database\Table; use Faker\Factory as FakerFactory; use Faker\Generator; use Illuminate\Contracts\Console\Kernel; @@ -17,6 +14,7 @@ use Spatie\LaravelRay\RayServiceProvider; use WayOfDev\Cycle\Bridge\Laravel\Providers\CycleServiceProvider; use WayOfDev\Cycle\Testing\Concerns\InteractsWithDatabase; +use WayOfDev\Cycle\Testing\RefreshDatabase; use function array_key_exists; use function array_merge; @@ -29,6 +27,7 @@ class TestCase extends OrchestraTestCase { use InteractsWithDatabase; + use RefreshDatabase; final protected static function faker(string $locale = 'en_US'): Generator { @@ -77,28 +76,6 @@ public function artisanCall(string $command, array $parameters = []) return $this->app[Kernel::class]->call($command, $parameters); } - protected function refreshDatabase(): void - { - $database = app(DatabaseProviderInterface::class)->database('default'); - - /** @var Table $table */ - foreach ($database->getTables() as $table) { - $schema = $table->getSchema(); - foreach ($schema->getForeignKeys() as $foreign) { - $schema->dropForeignKey($foreign->getColumns()); - } - - $schema->save(HandlerInterface::DROP_FOREIGN_KEYS); - } - - /** @var Table $table */ - foreach ($database->getTables() as $table) { - $schema = $table->getSchema(); - $schema->declareDropped(); - $schema->save(); - } - } - protected function assertConsoleCommandOutputContainsStrings( string $command, array $args = [],