refactor: Übergangs-API der Gesamtsperre entfernt (assertWritable, writable, refusal, writeFeatures, released); DiviLocked verlangt die gesperrten Fähigkeiten, Tests bauen Zustände über ReleaseMatrices

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-18 22:53:00 +02:00
co-authored by Claude Opus 5.5
parent c036a92b60
commit d0d3488df8
21 changed files with 129 additions and 239 deletions
@@ -124,7 +124,7 @@ final class ReleaseResolverTest extends TestCase
])->resolve();
self::assertSame(self::allBut('released'), self::states($status));
self::assertTrue($status->writable());
self::assertSame([], $status->matrix->unusable());
self::assertSame([], $status->problems);
}
@@ -142,7 +142,7 @@ final class ReleaseResolverTest extends TestCase
self::assertSame(['Seiten: et_x()'], $status->matrix->of(DiviFeature::PageWrite)->problems);
self::assertSame(ReleaseState::Incompatible, $status->state);
self::assertSame(['Seiten: et_x()', 'Katalog: Konstante X'], $status->problems);
self::assertFalse($status->writable());
self::assertFalse($status->matrix->of(DiviFeature::PageWrite)->usable());
}
public function testAProblemWithoutFeaturesLocksEveryFeature(): void
@@ -181,7 +181,7 @@ final class ReleaseResolverTest extends TestCase
self::assertSame(self::allBut('released'), self::states($status));
self::assertSame('auto', $status->source);
self::assertSame('auto', $status->matrix->of(DiviFeature::PresetWrite)->source);
self::assertTrue($status->writable());
self::assertSame([], $status->matrix->unusable());
}
/** Review focus 3: the automatic release needs every signature unchanged. */
@@ -196,7 +196,7 @@ final class ReleaseResolverTest extends TestCase
['Designsystem: x() – Signatur geändert'],
$status->matrix->of(DiviFeature::PresetWrite)->problems
);
self::assertFalse($status->writable());
self::assertFalse($status->matrix->of(DiviFeature::PresetWrite)->usable());
}
public function testAMissingReferenceMakesItsFeatureUntestedUnderAutomaticRelease(): void