feat(compat): Profile, Gates und Pods über den Kompatibilitätskern
Neu: Tier, Profile, Compatibility, CapabilityLocked, CapabilityGate, CompatibilityComponent, ProvidesCompatibility, DiviProfile sowie PodsFeature, PodsCompatibility und PodsIntegration. Das CapabilityGate sperrt gesperrte und unbekannte Fähigkeits-IDs (übernimmt die Sperre unbekannter IDs vom DiviFeatureGate) und delegiert nur Divi ausdrücklich. Pods-Schema, -Lesen, -Schreiben und -Feldrechte laufen über usable(PodsFeature::…); Schreiben verlangt FieldRead und FieldWrite, damit ein Rollback keine Werte verliert. lit-site-status meldet Pods über die CompatibilityComponent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b511ef6348
commit
c85131603b
@@ -119,20 +119,12 @@ final class FeatureSetsTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testUnknownIdsNamesTheIdsOfACoreToolThatAreNoDiviFeature(): void
|
||||
public function testDeclaredByIgnoresIdsThatAreNoDiviFeature(): void
|
||||
{
|
||||
$tool = Mockery::mock(Ability::class, DeclaresRequirements::class);
|
||||
$tool->allows('requirements')->with(['divi' => []])->andReturn(['page-write', 'other-integration', 'catalog']);
|
||||
$tool->allows('requirements')->andReturn(['pods-field-read', 'page-write']);
|
||||
|
||||
self::assertSame(['other-integration'], FeatureSets::unknownIds($tool, ['divi' => []]));
|
||||
}
|
||||
|
||||
public function testUnknownIdsIsEmptyForDiviToolsAndAnyOtherTool(): void
|
||||
{
|
||||
$divi = Mockery::mock(Ability::class, RequiresDiviFeatures::class);
|
||||
|
||||
self::assertSame([], FeatureSets::unknownIds($divi, []));
|
||||
self::assertSame([], FeatureSets::unknownIds(Mockery::mock(Ability::class), []));
|
||||
self::assertSame([DiviFeature::PageWrite], FeatureSets::declaredBy($tool, ['divi' => []]));
|
||||
}
|
||||
|
||||
public function testDeclaredByIsEmptyForAnyOtherTool(): void
|
||||
|
||||
Reference in New Issue
Block a user