feat: Divi-Adapter sperren je Fähigkeit – ReleaseGate::feature/assertFeature(s), DiviLocked und Ablehnung nennen die betroffenen Fähigkeiten (D6), DiviSaver prüft Seiten schreiben und die Fähigkeit des Speicherbereichs (D5), DesignArea::feature; Test-Standard alle Fähigkeiten freigegeben
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c4efeb3ba4
commit
e387d8d29e
@@ -6,6 +6,7 @@ namespace LIT\MCP\Tests\Unit\Integrations\Divi\Release;
|
||||
|
||||
use LIT\MCP\Integrations\Divi\Release\CompatibilityMatrix;
|
||||
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
|
||||
use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
|
||||
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
|
||||
use LIT\MCP\Integrations\Divi\Release\ReleaseStatus;
|
||||
use LIT\MCP\Tests\Support\ReleaseMatrices;
|
||||
@@ -132,4 +133,78 @@ final class ReleaseStatusTest extends TestCase
|
||||
|
||||
new ReleaseStatus(ReleaseState::Released, '5.2.1', 'code', [], null, CompatibilityMatrix::allIncompatible('x'));
|
||||
}
|
||||
|
||||
public function testRefusalForAnUntestedFeatureNamesItAndKeepsTheOthersWorking(): void
|
||||
{
|
||||
$error = ReleaseMatrices::status([DiviFeature::PageWrite])
|
||||
->refusalFor([DiviFeature::PageWrite, DiviFeature::PageRead]);
|
||||
$payload = self::assertToolError($error, 'divi_untested');
|
||||
|
||||
self::assertSame(423, $error->get_error_data()['status']);
|
||||
|
||||
self::assertSame(
|
||||
'Achtung: Divi 5.3.0 ist auf dieser Website für „Seiten schreiben“ noch nicht für LIT MCP freigegeben. '
|
||||
. 'Das ist gesperrt, bis ein Administrator unter Einstellungen → LIT MCP → Divi die Prüfung ausführt '
|
||||
. 'und die Version freigibt. Es wurde nichts geändert.',
|
||||
$payload['message']
|
||||
);
|
||||
self::assertSame(
|
||||
'Gesperrt: „Seiten schreiben“. Andere Divi-Werkzeuge funktionieren weiter, sofern ihre Fähigkeiten '
|
||||
. 'freigegeben sind. Den Nutzer bitten, die Divi-Prüfung auszuführen und die Version freizugeben.',
|
||||
$payload['hint']
|
||||
);
|
||||
self::assertSame(
|
||||
[['id' => 'page-write', 'label' => 'Seiten schreiben', 'state' => 'untested', 'problems' => []]],
|
||||
$payload['features']
|
||||
);
|
||||
self::assertArrayNotHasKey('problems', $payload);
|
||||
}
|
||||
|
||||
public function testRefusalForTakesTheWorstStateAndListsEveryLockedFeature(): void
|
||||
{
|
||||
$matrix = ReleaseMatrices::matrix([DiviFeature::ThemeBuilderWrite], ReleaseState::Incompatible);
|
||||
$features = [];
|
||||
foreach (DiviFeature::cases() as $feature) {
|
||||
$features[$feature->value] = $matrix->of($feature);
|
||||
}
|
||||
$features['library-write'] = new FeatureStatus(DiviFeature::LibraryWrite, ReleaseState::Untested);
|
||||
$status = ReleaseStatus::of('5.99.0', new CompatibilityMatrix($features));
|
||||
|
||||
$payload = self::assertToolError(
|
||||
$status->refusalFor([DiviFeature::PageWrite, DiviFeature::LibraryWrite, DiviFeature::ThemeBuilderWrite]),
|
||||
'divi_incompatible'
|
||||
);
|
||||
|
||||
self::assertSame(
|
||||
'Divi 5.99.0 hat Stellen geändert, die LIT MCP für „Theme Builder schreiben“ nutzt. Das ist gesperrt, bis '
|
||||
. 'LIT MCP aktualisiert wurde. Es wurde nichts geändert.',
|
||||
$payload['message']
|
||||
);
|
||||
self::assertStringStartsWith(
|
||||
'Gesperrt: „Bibliothek schreiben“ und „Theme Builder schreiben“. Andere Divi-Werkzeuge',
|
||||
$payload['hint']
|
||||
);
|
||||
self::assertStringEndsWith('dass LIT MCP aktualisiert werden muss.', $payload['hint']);
|
||||
self::assertSame(['library-write', 'tb-write'], array_column($payload['features'], 'id'));
|
||||
self::assertSame(['untested', 'incompatible'], array_column($payload['features'], 'state'));
|
||||
self::assertSame(['Seiten: et_x() – Signatur geändert'], $payload['problems']);
|
||||
}
|
||||
|
||||
public function testRefusalForNamesThreeFeatures(): void
|
||||
{
|
||||
$locked = [DiviFeature::PageWrite, DiviFeature::LibraryWrite, DiviFeature::PresetWrite];
|
||||
$payload = self::assertToolError(ReleaseMatrices::status($locked)->refusalFor($locked), 'divi_untested');
|
||||
|
||||
self::assertStringStartsWith(
|
||||
'Gesperrt: „Seiten schreiben“, „Bibliothek schreiben“ und „Presets schreiben“.',
|
||||
$payload['hint']
|
||||
);
|
||||
}
|
||||
|
||||
public function testUsableFeaturesHaveNoRefusal(): void
|
||||
{
|
||||
$this->expectException(LogicException::class);
|
||||
|
||||
ReleaseMatrices::status([DiviFeature::Catalog])->refusalFor([DiviFeature::PageWrite, DiviFeature::PageRead]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user