<?php
declare(strict_types=1);
final class DatabaseTest extends PHPUnit\Framework\TestCase {
public function testCanBeInstantiatedWithFake() {
$api = new WpInstaller\CpanelApi();
if (!$api->fake_cpanel_api) {
$this->markTestSkipped('Only runs with FAKE_CPANEL_API=1');
}
$this->assertInstanceOf(
WpInstaller\Database::class,
new WpInstaller\Database('foo', $api),
'Successfully instantiated WpInstaller\Database object'
);
}
public function testDbLifeCycle () {
$db = new WpInstaller\Database('foo', ( new WpInstaller\CpanelApi() ));
$this->assertEmpty($db->info(), 'db->info starts empty');
$db->provision();
$keys = ['database_name', 'user_name', 'password', 'host', 'table_prefix'];
$info = $db->info();
foreach ($keys as $key) {
$this->assertArrayHasKey($key, $info, "db->info has $key");
}
$mysqli_connection = new mysqli(
$info['host'],
$info['user_name'],
$info['password'],
$info['database_name']
);
if (mysqli_connect_errno()) {
// Just some debugging if we find it isnt empty
var_dump(mysqli_connect_error());
}
$this->assertEmpty(mysqli_connect_errno(), 'No database connection errors');
$db->rollback();
$this->assertEmpty($db->info(), 'db->info is empty after rollback');
}
}