Database collations (#489)

* SyncDatabases

* Collation on Create inc WordPress

* Refactored Enum

* Resolve sync issue

* Fix for PostgreSQL

* pint

* reversed enum

* style adjustments

* add unit tests

* style

* fix tests

* more tests

---------

Co-authored-by: Saeed Vaziry <61919774+saeedvaziry@users.noreply.github.com>
Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
This commit is contained in:
Richard Anderson
2025-03-02 16:18:27 +00:00
committed by GitHub
parent 269ee8d962
commit 5a12ed76bb
35 changed files with 585 additions and 19 deletions

View File

@ -0,0 +1,80 @@
<?php
namespace Tests\Unit\SSH\Services\Database;
use App\Facades\SSH;
use App\SSH\Services\Database\Database;
use Tests\TestCase;
class SyncDatabasesTest extends TestCase
{
/**
* @dataProvider data
*/
public function test_sync_databases(string $name, string $version, string $output): void
{
$database = $this->server->database();
$database->name = $name;
$database->version = $version;
$database->save();
SSH::fake($output);
/** @var Database $databaseHandler */
$databaseHandler = $database->handler();
$databaseHandler->syncDatabases();
$this->assertDatabaseHas('databases', [
'server_id' => $this->server->id,
'name' => 'vito',
]);
}
/**
* @TODO Add more test cases
*
* @return array[]
*/
public static function data(): array
{
return [
[
'mysql',
'8.0',
<<<'EOD'
database_name charset collation
mysql utf8mb4 utf8mb4_0900_ai_ci
information_schema utf8mb3 utf8mb3_general_ci
performance_schema utf8mb4 utf8mb4_0900_ai_ci
sys utf8mb4 utf8mb4_0900_ai_ci
vito utf8mb3 utf8mb3_general_ci
EOD
],
[
'mysql',
'5.7',
<<<'EOD'
database_name charset collation
mysql utf8mb4 utf8mb4_0900_ai_ci
information_schema utf8mb3 utf8mb3_general_ci
performance_schema utf8mb4 utf8mb4_0900_ai_ci
sys utf8mb4 utf8mb4_0900_ai_ci
vito utf8mb3 utf8mb3_general_ci
EOD
],
[
'postgresql',
'16',
<<<'EOD'
database_name | charset | collation
---------------+---------+-------------
postgres | UTF8 | en_US.UTF-8
template1 | UTF8 | en_US.UTF-8
template0 | UTF8 | en_US.UTF-8
vito | UTF8 | en_US.UTF-8
(3 rows)
EOD
],
];
}
}