feat: change log table with retention cron and limits option
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user