feat: Divi-Freigabe je Fähigkeit – CompatibilityMatrix aus Problemen mit Art und Fähigkeiten (ManifestCheck::problems), automatische Freigabe unveränderter Fähigkeiten (Filter lit_mcp_divi_auto_release), Mirror-Probleme im Transient (Format 2), ReleaseStatus trägt die Matrix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
710444e88d
commit
c4efeb3ba4
@@ -0,0 +1,62 @@
|
||||
<?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\Problem;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class ProblemTest extends TestCase
|
||||
{
|
||||
public function testOnlyCallMirrorConstantAndResolverAreHard(): void
|
||||
{
|
||||
$hard = [];
|
||||
foreach (['call', 'signature', 'mirror', 'constant', 'reference-missing', 'resolver'] as $kind) {
|
||||
$hard[$kind] = (new Problem('x', [DiviFeature::PageWrite], $kind))->isHard();
|
||||
}
|
||||
|
||||
self::assertSame(
|
||||
['call' => true, 'signature' => false, 'mirror' => true, 'constant' => true,
|
||||
'reference-missing' => false, 'resolver' => true],
|
||||
$hard
|
||||
);
|
||||
}
|
||||
|
||||
public function testConcernsItsFeaturesAndWithoutFeaturesEveryFeature(): void
|
||||
{
|
||||
$problem = new Problem('x', [DiviFeature::PageWrite, DiviFeature::ThemeBuilderWrite], Problem::CALL);
|
||||
self::assertTrue($problem->concerns(DiviFeature::ThemeBuilderWrite));
|
||||
self::assertFalse($problem->concerns(DiviFeature::PageRead));
|
||||
|
||||
$unassigned = new Problem('x', [], Problem::CALL);
|
||||
foreach (DiviFeature::cases() as $feature) {
|
||||
self::assertTrue($unassigned->concerns($feature), $feature->value);
|
||||
}
|
||||
}
|
||||
|
||||
public function testRoundTripsThroughTheCacheFormat(): void
|
||||
{
|
||||
$problem = new Problem('Seiten: Nachbau von a() – x', [DiviFeature::PageWrite], Problem::MIRROR);
|
||||
|
||||
self::assertSame(
|
||||
['label' => 'Seiten: Nachbau von a() – x', 'kind' => 'mirror', 'features' => ['page-write']],
|
||||
$problem->toArray()
|
||||
);
|
||||
self::assertEquals($problem, Problem::fromArray($problem->toArray()));
|
||||
}
|
||||
|
||||
public function testFromArrayRefusesAnythingElse(): void
|
||||
{
|
||||
foreach ([
|
||||
'no array' => 'Seiten: x()',
|
||||
'no label' => ['kind' => 'call', 'features' => []],
|
||||
'unknown kind' => ['label' => 'x', 'kind' => 'other', 'features' => []],
|
||||
'unknown feature' => ['label' => 'x', 'kind' => 'call', 'features' => ['page-delete']],
|
||||
'features no list' => ['label' => 'x', 'kind' => 'call', 'features' => 'page-write'],
|
||||
] as $case => $row) {
|
||||
self::assertNull(Problem::fromArray($row), $case);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user