Skip to content

Commit b49d805

Browse files
committed
feat: add refresh database testing helper
1 parent a64c6b3 commit b49d805

File tree

2 files changed

+36
-25
lines changed

2 files changed

+36
-25
lines changed

src/Testing/RefreshDatabase.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace WayOfDev\Cycle\Testing;
6+
7+
use Cycle\Database\DatabaseProviderInterface;
8+
use Cycle\Database\Driver\HandlerInterface;
9+
use Cycle\Database\Table;
10+
11+
trait RefreshDatabase
12+
{
13+
protected function refreshDatabase(): void
14+
{
15+
$database = app(DatabaseProviderInterface::class)->database('default');
16+
17+
/** @var Table $table */
18+
foreach ($database->getTables() as $table) {
19+
$schema = $table->getSchema();
20+
foreach ($schema->getForeignKeys() as $foreign) {
21+
$schema->dropForeignKey($foreign->getColumns());
22+
}
23+
24+
$schema->save(HandlerInterface::DROP_FOREIGN_KEYS);
25+
}
26+
27+
/** @var Table $table */
28+
foreach ($database->getTables() as $table) {
29+
$schema = $table->getSchema();
30+
$schema->declareDropped();
31+
$schema->save();
32+
}
33+
}
34+
}

tests/src/TestCase.php

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44

55
namespace WayOfDev\Tests;
66

7-
use Cycle\Database\DatabaseProviderInterface;
8-
use Cycle\Database\Driver\HandlerInterface;
9-
use Cycle\Database\Table;
107
use Faker\Factory as FakerFactory;
118
use Faker\Generator;
129
use Illuminate\Contracts\Console\Kernel;
@@ -17,6 +14,7 @@
1714
use Spatie\LaravelRay\RayServiceProvider;
1815
use WayOfDev\Cycle\Bridge\Laravel\Providers\CycleServiceProvider;
1916
use WayOfDev\Cycle\Testing\Concerns\InteractsWithDatabase;
17+
use WayOfDev\Cycle\Testing\RefreshDatabase;
2018

2119
use function array_key_exists;
2220
use function array_merge;
@@ -29,6 +27,7 @@
2927
class TestCase extends OrchestraTestCase
3028
{
3129
use InteractsWithDatabase;
30+
use RefreshDatabase;
3231

3332
final protected static function faker(string $locale = 'en_US'): Generator
3433
{
@@ -77,28 +76,6 @@ public function artisanCall(string $command, array $parameters = [])
7776
return $this->app[Kernel::class]->call($command, $parameters);
7877
}
7978

80-
protected function refreshDatabase(): void
81-
{
82-
$database = app(DatabaseProviderInterface::class)->database('default');
83-
84-
/** @var Table $table */
85-
foreach ($database->getTables() as $table) {
86-
$schema = $table->getSchema();
87-
foreach ($schema->getForeignKeys() as $foreign) {
88-
$schema->dropForeignKey($foreign->getColumns());
89-
}
90-
91-
$schema->save(HandlerInterface::DROP_FOREIGN_KEYS);
92-
}
93-
94-
/** @var Table $table */
95-
foreach ($database->getTables() as $table) {
96-
$schema = $table->getSchema();
97-
$schema->declareDropped();
98-
$schema->save();
99-
}
100-
}
101-
10279
protected function assertConsoleCommandOutputContainsStrings(
10380
string $command,
10481
array $args = [],

0 commit comments

Comments
 (0)