feat: lit-site-status, Admin-Tab und Admin-Hinweis zeigen Divi-Fähigkeiten mit Zustand, Quelle, Problemen und betroffenen Werkzeugen
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
b92545a8fe
commit
2aef6e1154
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LIT\MCP\Tests\Unit\Integrations\Divi\Release;
|
||||
|
||||
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
|
||||
use LIT\MCP\Integrations\Divi\Release\FeatureOverview;
|
||||
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
|
||||
use LIT\MCP\Tests\Support\FeatureFakeTool;
|
||||
use LIT\MCP\Tests\Support\MatrixFixtures;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class FeatureOverviewTest extends TestCase
|
||||
{
|
||||
private static function overview(): FeatureOverview
|
||||
{
|
||||
return new FeatureOverview(static fn (): array => [
|
||||
new FeatureFakeTool('lit/divi-outline', true, [DiviFeature::PageRead]),
|
||||
new FeatureFakeTool('lit/divi-insert', true, [DiviFeature::PageRead, DiviFeature::PageWrite]),
|
||||
new FeatureFakeTool('lit/divi-presets-assign', false, [DiviFeature::PresetWrite]),
|
||||
new FeatureFakeTool('lit/content-create', true, []),
|
||||
]);
|
||||
}
|
||||
|
||||
public function testToolsAreNamedAsTheClientSeesThem(): void
|
||||
{
|
||||
$tools = self::overview()->toolsByFeature();
|
||||
|
||||
self::assertSame(['lit-divi-outline', 'lit-divi-insert'], $tools['page-read']);
|
||||
self::assertSame(['lit-divi-insert'], $tools['page-write']);
|
||||
self::assertSame(['lit/divi-presets-assign'], $tools['preset-write']);
|
||||
}
|
||||
|
||||
public function testAToolWithoutFeaturesIsLeftOut(): void
|
||||
{
|
||||
$overview = new FeatureOverview(static fn (): array => [new FeatureFakeTool('lit/content-create', true, [])]);
|
||||
|
||||
self::assertSame([], $overview->toolsByFeature());
|
||||
}
|
||||
|
||||
public function testRowsCarryTheMatrixAndTheToolsOfEachFeature(): void
|
||||
{
|
||||
$matrix = MatrixFixtures::with(
|
||||
DiviFeature::PageWrite,
|
||||
ReleaseState::Incompatible,
|
||||
'code',
|
||||
'Seiten: et_pb_x() fehlt'
|
||||
);
|
||||
|
||||
$rows = array_column(self::overview()->rows($matrix), null, 'id');
|
||||
|
||||
self::assertCount(count(DiviFeature::cases()), $rows);
|
||||
self::assertSame(
|
||||
[
|
||||
'id' => 'page-write',
|
||||
'label' => 'Seiten schreiben',
|
||||
'state' => 'incompatible',
|
||||
'problems' => ['Seiten: et_pb_x() fehlt'],
|
||||
'source' => null,
|
||||
'tools' => ['lit-divi-insert'],
|
||||
],
|
||||
$rows['page-write']
|
||||
);
|
||||
self::assertSame('released', $rows['page-read']['state']);
|
||||
self::assertSame('code', $rows['page-read']['source']);
|
||||
self::assertSame([], $rows['catalog']['tools']);
|
||||
}
|
||||
|
||||
public function testWithoutToolsEveryRowHasAnEmptyToolList(): void
|
||||
{
|
||||
foreach (FeatureOverview::withoutTools()->rows(MatrixFixtures::released()) as $row) {
|
||||
self::assertSame([], $row['tools']);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user