Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
38 lines
1.3 KiB
PHP
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();
|
|
}
|
|
}
|