![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/rentpix.corals.io/vendor/orchestra/testbench-core/src/Concerns/ |
<?php namespace Orchestra\Testbench\Concerns; use Closure; use Illuminate\Database\Events\DatabaseRefreshed; use Orchestra\Testbench\Attributes\DefineDatabase; use Orchestra\Testbench\Attributes\WithMigration; use Orchestra\Testbench\Exceptions\ApplicationNotAvailableException; use Orchestra\Testbench\Features\TestingFeature; /** * @internal */ trait HandlesDatabases { /** * Setup database requirements. * * @param \Closure():void $callback */ protected function setUpDatabaseRequirements(Closure $callback): void { if (\is_null($app = $this->app)) { throw ApplicationNotAvailableException::make(__METHOD__); } $app['events']->listen(DatabaseRefreshed::class, function () { $this->defineDatabaseMigrationsAfterDatabaseRefreshed(); }); if (static::usesTestingConcern(WithLaravelMigrations::class)) { /** @phpstan-ignore-next-line */ $this->setUpWithLaravelMigrations(); } TestingFeature::run( testCase: $this, attribute: function () use ($app) { $this->parseTestMethodAttributes($app, WithMigration::class); }, ); $attributeCallbacks = TestingFeature::run( testCase: $this, default: function () { $this->defineDatabaseMigrations(); $this->beforeApplicationDestroyed(fn () => $this->destroyDatabaseMigrations()); }, annotation: fn () => $this->parseTestMethodAnnotations($app, 'define-db'), attribute: fn () => $this->parseTestMethodAttributes($app, DefineDatabase::class) )->get('attribute'); $callback(); $attributeCallbacks->handle(); $this->defineDatabaseSeeders(); } /** * Determine if using in-memory SQLite database connection * * @param string|null $connection * @return bool */ protected function usesSqliteInMemoryDatabaseConnection(?string $connection = null): bool { if (\is_null($app = $this->app)) { throw ApplicationNotAvailableException::make(__METHOD__); } /** @var \Illuminate\Contracts\Config\Repository $config */ $config = $app->make('config'); /** @var string $connection */ $connection = ! \is_null($connection) ? $connection : $config->get('database.default'); /** @var array{driver: string, database: string}|null $database */ $database = $config->get("database.connections.{$connection}"); return ! \is_null($database) && $database['driver'] === 'sqlite' && $database['database'] == ':memory:'; } /** * Define database migrations. * * @return void */ protected function defineDatabaseMigrations() { // Define database migrations. } /** * Define database migrations after database refreshed. * * @return void */ protected function defineDatabaseMigrationsAfterDatabaseRefreshed() { // Define database migrations after database refreshed. } /** * Destroy database migrations. * * @return void */ protected function destroyDatabaseMigrations() { // Destroy database migrations. } /** * Define database seeders. * * @return void */ protected function defineDatabaseSeeders() { // Define database seeders. } }