refactor: Divi-Boot-Schritte in DiviIntegration::boot() (Bootable) – Upgrader-Hook, Prüf-Route, CLI und Reiter „Divi“ über lit_mcp_admin_tabs; IntegrationRegistry::boot() bootet jede Integration genau einmal; Prüfseiten-Aufräumen im load-Hook statt beim Rendern
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
06148fb8c1
commit
6c59934caa
@@ -4,14 +4,21 @@ declare(strict_types=1);
|
||||
|
||||
namespace LIT\MCP\Tests\Unit\Integrations\Divi;
|
||||
|
||||
use Brain\Monkey\Actions;
|
||||
use Brain\Monkey\Filters;
|
||||
use Brain\Monkey\Functions;
|
||||
use LIT\MCP\Abilities\Ability;
|
||||
use LIT\MCP\Admin\AdminTab;
|
||||
use LIT\MCP\Admin\DiviTab;
|
||||
use LIT\MCP\Admin\SettingsPage;
|
||||
use LIT\MCP\Integrations\Core\EnvironmentComponent;
|
||||
use LIT\MCP\Integrations\Divi\DiviBuilderDetector;
|
||||
use LIT\MCP\Integrations\Divi\DiviEnvironmentComponent;
|
||||
use LIT\MCP\Integrations\Divi\DiviIntegration;
|
||||
use LIT\MCP\Integrations\Divi\DiviLogoUsage;
|
||||
use LIT\MCP\Integrations\Divi\Pages\DiviContentComposer;
|
||||
use LIT\MCP\Integrations\Divi\Release\DiviCheckRoute;
|
||||
use LIT\MCP\Integrations\Divi\Release\ReleaseResolver;
|
||||
use LIT\MCP\Integrations\Media\MediaUsageSource;
|
||||
use LIT\MCP\Integrations\WordPress\BuilderDetector;
|
||||
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
|
||||
@@ -251,4 +258,36 @@ final class DiviIntegrationTest extends TestCase
|
||||
self::assertSame(1, $asked);
|
||||
self::assertFalse((new DiviIntegration($schema, FakeChangeLog::forbidden()))->libraryIdsVisible());
|
||||
}
|
||||
|
||||
/** Bootable: Divi's own hooks – upgrader cache reset, check route, tab "Divi" after the plugin's tabs. */
|
||||
public function testBootRegistersDivisOwnHooks(): void
|
||||
{
|
||||
$upgraded = null;
|
||||
$tabs = null;
|
||||
Actions\expectAdded('upgrader_process_complete')->once()->whenHappen(
|
||||
static function (callable $callback) use (&$upgraded): void {
|
||||
$upgraded = $callback;
|
||||
}
|
||||
);
|
||||
Actions\expectAdded('rest_api_init')->once()->with(Mockery::on(
|
||||
static fn (array $callback): bool => $callback[0] instanceof DiviCheckRoute
|
||||
));
|
||||
Filters\expectAdded(SettingsPage::TABS_FILTER)->once()->whenHappen(
|
||||
static function (callable $callback) use (&$tabs): void {
|
||||
$tabs = $callback;
|
||||
}
|
||||
);
|
||||
Functions\expect('delete_transient')->once()->with(ReleaseResolver::CACHE)->andReturn(true);
|
||||
$base = Mockery::mock(AdminTab::class);
|
||||
|
||||
(new DiviIntegration(Mockery::mock(ContentSchema::class), FakeChangeLog::forbidden()))->boot();
|
||||
self::assertIsCallable($upgraded);
|
||||
$upgraded();
|
||||
self::assertIsCallable($tabs);
|
||||
$all = $tabs([$base]);
|
||||
|
||||
self::assertCount(2, $all);
|
||||
self::assertSame($base, $all[0]);
|
||||
self::assertInstanceOf(DiviTab::class, $all[1]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user