Files
WP-LIT-MCP/tests/Unit/ChangeLog/ChangeLogInstallerTest.php
T

38 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace LIT\MCP\Tests\Unit\ChangeLog;
use Brain\Monkey\Functions;
use LIT\MCP\ChangeLog\ChangeLog;
use LIT\MCP\ChangeLog\ChangeLogInstaller;
use LIT\MCP\Tests\Unit\TestCase;
use Mockery;
final class ChangeLogInstallerTest extends TestCase
{
public function testInstallCreatesTheTableAndStoresTheVersion(): void
{
$db = Mockery::mock(\wpdb::class)->makePartial();
Functions\expect('dbDelta')->once()->with(Mockery::on(static function (string $sql): bool {
return str_contains($sql, 'CREATE TABLE wp_lit_mcp_log (')
&& str_contains($sql, 'client varchar(191)')
&& str_contains($sql, 'revision_id bigint(20) unsigned DEFAULT NULL')
&& str_contains($sql, 'snapshot_id varchar(64) DEFAULT NULL')
&& str_contains($sql, 'PRIMARY KEY (id)');
}));
Functions\expect('update_option')->once()->with('lit_mcp_db_version', '1');
(new ChangeLogInstaller(new ChangeLog($db)))->install();
}
public function testMaybeInstallSkipsWhenTheVersionIsCurrent(): void
{
Functions\when('get_option')->justReturn('1');
Functions\expect('dbDelta')->never();
(new ChangeLogInstaller(new ChangeLog(Mockery::mock(\wpdb::class)->makePartial())))->maybeInstall();
}
}