From 13fed332cd6db1e66ef148bc8aa6d4215db58b2b Mon Sep 17 00:00:00 2001 From: Abrar Ahmad Date: Wed, 14 Sep 2022 14:19:55 +0500 Subject: [PATCH] complete test sqlite manager customize path --- .../SQLiteDatabaseManager.php | 13 ++++++++++--- tests/TenantDatabaseManagerTest.php | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/Database/TenantDatabaseManagers/SQLiteDatabaseManager.php b/src/Database/TenantDatabaseManagers/SQLiteDatabaseManager.php index 59c373a9..9f4f19fc 100644 --- a/src/Database/TenantDatabaseManagers/SQLiteDatabaseManager.php +++ b/src/Database/TenantDatabaseManagers/SQLiteDatabaseManager.php @@ -10,10 +10,12 @@ use Throwable; class SQLiteDatabaseManager implements TenantDatabaseManager { + public static string|null $path = null; + public function createDatabase(TenantWithDatabase $tenant): bool { try { - return file_put_contents(database_path($tenant->database()->getName()), ''); + return (bool) file_put_contents($this->getPath($tenant->database()->getName()), ''); } catch (Throwable) { return false; } @@ -22,7 +24,7 @@ class SQLiteDatabaseManager implements TenantDatabaseManager public function deleteDatabase(TenantWithDatabase $tenant): bool { try { - return unlink(database_path($tenant->database()->getName())); + return unlink($this->getPath($tenant->database()->getName())); } catch (Throwable) { return false; } @@ -30,7 +32,7 @@ class SQLiteDatabaseManager implements TenantDatabaseManager public function databaseExists(string $name): bool { - return file_exists(database_path($name)); + return file_exists($this->getPath($name)); } public function makeConnectionConfig(array $baseConfig, string $databaseName): array @@ -44,4 +46,9 @@ class SQLiteDatabaseManager implements TenantDatabaseManager { // } + + public function getPath(string $name): string + { + return static::$path ? static::$path . '/' . $name : database_path($name); + } } diff --git a/tests/TenantDatabaseManagerTest.php b/tests/TenantDatabaseManagerTest.php index ab25310c..d2a7582f 100644 --- a/tests/TenantDatabaseManagerTest.php +++ b/tests/TenantDatabaseManagerTest.php @@ -225,7 +225,21 @@ test('tenant database can be created on a foreign server', function () { }); test('path used by sqlite manager can be customized', function () { - pest()->markTestIncomplete(); + Event::listen(TenantCreated::class, JobPipeline::make([CreateDatabase::class])->send(function (TenantCreated $event) { + return $event->tenant; + })->toListener()); + + // Set custom path for SQLite file + SQLiteDatabaseManager::$path = $customPath = storage_path(); + + $name = Str::random(8). '.sqlite'; + Tenant::create([ + 'tenancy_db_name' => $name, + 'tenancy_db_connection' => 'sqlite', + ]); + + expect(file_exists( $customPath . '/' . $name))->toBeTrue(); + unlink($customPath . '/' . $name); // clean up }); // Datasets