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:
co-authored by
Claude Opus 5.5
parent
c036a92b60
commit
d0d3488df8
@@ -23,6 +23,7 @@ use LIT\MCP\Plugin;
|
||||
use LIT\MCP\Tests\Support\FakeChangeLog;
|
||||
use LIT\MCP\Tests\Support\FeatureFakeTool;
|
||||
use LIT\MCP\Tests\Support\MatrixFixtures;
|
||||
use LIT\MCP\Tests\Support\ReleaseMatrices;
|
||||
use LIT\MCP\Tests\Unit\TestCase;
|
||||
use Mockery;
|
||||
use WP_Post;
|
||||
@@ -197,7 +198,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testUntestedWithAFreshGreenReportOffersTheRelease(): void
|
||||
{
|
||||
$html = $this->rendered(new ReleaseStatus(ReleaseState::Untested, '5.3.0'), self::report());
|
||||
$html = $this->rendered(ReleaseMatrices::uniform(ReleaseState::Untested), self::report());
|
||||
|
||||
self::assertStringContainsString('ungetestet', $html);
|
||||
self::assertStringContainsString('Prüfung starten', $html);
|
||||
@@ -207,9 +208,9 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testCheckButtonSaysWhatItDoesAndLeadsWhileNothingElseCanBeDone(): void
|
||||
{
|
||||
$stale = $this->rendered(new ReleaseStatus(ReleaseState::Untested, '5.3.0'), self::report(true, '5.2.9'));
|
||||
$fresh = $this->rendered(new ReleaseStatus(ReleaseState::Untested, '5.3.0'), self::report());
|
||||
$released = $this->rendered(ReleaseStatus::released('5.3.0'), self::report());
|
||||
$stale = $this->rendered(ReleaseMatrices::uniform(ReleaseState::Untested), self::report(true, '5.2.9'));
|
||||
$fresh = $this->rendered(ReleaseMatrices::uniform(ReleaseState::Untested), self::report());
|
||||
$released = $this->rendered(ReleaseMatrices::released('5.3.0'), self::report());
|
||||
|
||||
foreach ([$stale, $fresh, $released] as $html) {
|
||||
self::assertStringContainsString('legt eine private Testseite an', $html);
|
||||
@@ -222,7 +223,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testUntestedWithAStaleReportAsksForANewCheck(): void
|
||||
{
|
||||
$html = $this->rendered(new ReleaseStatus(ReleaseState::Untested, '5.3.0'), self::report(true, '5.2.9'));
|
||||
$html = $this->rendered(ReleaseMatrices::uniform(ReleaseState::Untested), self::report(true, '5.2.9'));
|
||||
|
||||
self::assertStringNotContainsString('Divi 5.3.0 freigeben', $html);
|
||||
self::assertStringContainsString('Prüfung erneut ausführen', $html);
|
||||
@@ -230,7 +231,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testReleasedFromCodeOffersNeitherReleaseNorWithdrawal(): void
|
||||
{
|
||||
$html = $this->rendered(ReleaseStatus::released('5.3.0'), self::report());
|
||||
$html = $this->rendered(ReleaseMatrices::released('5.3.0'), self::report());
|
||||
|
||||
self::assertStringContainsString('freigegeben', $html);
|
||||
self::assertStringContainsString('im Plugin als getestet hinterlegt', $html);
|
||||
@@ -240,7 +241,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testAnAutomaticReleaseSaysSoAndOffersNeitherReleaseNorWithdrawal(): void
|
||||
{
|
||||
$html = $this->rendered(ReleaseStatus::released('5.99.0', ReleaseStatus::SOURCE_AUTO), self::report());
|
||||
$html = $this->rendered(ReleaseMatrices::released('5.99.0', ReleaseStatus::SOURCE_AUTO), self::report());
|
||||
|
||||
self::assertStringContainsString('Automatisch freigegeben', $html);
|
||||
self::assertStringNotContainsString('freigeben</button>', $html);
|
||||
@@ -249,7 +250,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testADatabaseReleaseCanBeWithdrawn(): void
|
||||
{
|
||||
$status = new ReleaseStatus(ReleaseState::Released, '5.3.0', ReleaseStatus::SOURCE_DATABASE, [], [
|
||||
$status = ReleaseMatrices::released('5.3.0', ReleaseStatus::SOURCE_DATABASE, [
|
||||
'released_at' => '2026-10-01T08:00:00+00:00', 'user_id' => 1,
|
||||
]);
|
||||
|
||||
@@ -287,7 +288,7 @@ final class DiviTabTest extends TestCase
|
||||
public function testIncompatibleListsTheProblems(): void
|
||||
{
|
||||
$html = $this->rendered(
|
||||
new ReleaseStatus(ReleaseState::Incompatible, '5.3.0', null, ['Theme Builder: Nachbau von x() – y']),
|
||||
ReleaseMatrices::uniform(ReleaseState::Incompatible, '5.3.0', ['Theme Builder: Nachbau von x() – y']),
|
||||
null
|
||||
);
|
||||
|
||||
@@ -316,7 +317,7 @@ final class DiviTabTest extends TestCase
|
||||
$tab = $this->tab(self::report(), Mockery::mock(ReleaseStore::class));
|
||||
|
||||
$tab->removeOrphans();
|
||||
$html = $this->rendered(ReleaseStatus::released('5.3.0'), self::report(), $tab);
|
||||
$html = $this->rendered(ReleaseMatrices::released('5.3.0'), self::report(), $tab);
|
||||
|
||||
self::assertStringContainsString('Liegengebliebene Prüfseiten gelöscht: 51', $html);
|
||||
}
|
||||
@@ -326,7 +327,7 @@ final class DiviTabTest extends TestCase
|
||||
Functions\expect('get_posts')->never();
|
||||
Functions\expect('wp_delete_post')->never();
|
||||
|
||||
$html = $this->rendered(ReleaseStatus::released('5.3.0'), self::report());
|
||||
$html = $this->rendered(ReleaseMatrices::released('5.3.0'), self::report());
|
||||
|
||||
self::assertStringNotContainsString('Liegengebliebene Prüfseiten', $html);
|
||||
}
|
||||
@@ -367,7 +368,7 @@ final class DiviTabTest extends TestCase
|
||||
new FeatureStatus(DiviFeature::Catalog, ReleaseState::Untested, [], null),
|
||||
]);
|
||||
|
||||
return new ReleaseStatus(ReleaseState::Incompatible, '5.3.0', null, [], null, matrix: $matrix);
|
||||
return ReleaseStatus::of('5.3.0', $matrix);
|
||||
}
|
||||
|
||||
public function testTheFeatureTableShowsStateSourceProblemsAndTools(): void
|
||||
@@ -403,11 +404,11 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testTheTableNamesEverySourceInWords(): void
|
||||
{
|
||||
$code = $this->rendered(ReleaseStatus::released('5.3.0'), null);
|
||||
$code = $this->rendered(ReleaseMatrices::released('5.3.0'), null);
|
||||
$database = $this->rendered(
|
||||
new ReleaseStatus(ReleaseState::Released, '5.3.0', ReleaseStatus::SOURCE_DATABASE, [], [
|
||||
ReleaseStatus::of('5.3.0', MatrixFixtures::released('database'), [
|
||||
'released_at' => '2026-10-01T08:00:00+00:00', 'user_id' => 1,
|
||||
], matrix: MatrixFixtures::released('database')),
|
||||
]),
|
||||
self::report()
|
||||
);
|
||||
|
||||
@@ -417,7 +418,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testTheTabExplainsTheAutomationAndTheFilter(): void
|
||||
{
|
||||
$html = $this->rendered(ReleaseStatus::released('5.3.0'), null);
|
||||
$html = $this->rendered(ReleaseMatrices::released('5.3.0'), null);
|
||||
|
||||
self::assertStringContainsString('gibt LIT MCP jede Fähigkeit einzeln frei', $html);
|
||||
self::assertStringContainsString('<code>lit_mcp_divi_auto_release</code>', $html);
|
||||
@@ -429,11 +430,7 @@ final class DiviTabTest extends TestCase
|
||||
public function testTheTabNoLongerSaysWritingIsLockedAsAWhole(): void
|
||||
{
|
||||
$untested = $this->rendered(
|
||||
new ReleaseStatus(
|
||||
ReleaseState::Untested,
|
||||
'5.3.0',
|
||||
matrix: MatrixFixtures::with(DiviFeature::Catalog, ReleaseState::Untested)
|
||||
),
|
||||
ReleaseStatus::of('5.3.0', MatrixFixtures::with(DiviFeature::Catalog, ReleaseState::Untested)),
|
||||
null
|
||||
);
|
||||
$incompatible = $this->rendered(self::mixedStatus(), null);
|
||||
@@ -450,9 +447,9 @@ final class DiviTabTest extends TestCase
|
||||
$matrix = MatrixFixtures::released('database', [
|
||||
new FeatureStatus(DiviFeature::PageWrite, ReleaseState::Incompatible, ['Seiten: x() fehlt'], null),
|
||||
]);
|
||||
$status = new ReleaseStatus(ReleaseState::Incompatible, '5.3.0', ReleaseStatus::SOURCE_DATABASE, [], [
|
||||
$status = ReleaseStatus::of('5.3.0', $matrix, [
|
||||
'released_at' => '2026-10-01T08:00:00+00:00', 'user_id' => 1,
|
||||
], matrix: $matrix);
|
||||
]);
|
||||
|
||||
self::assertStringContainsString('Freigabe zurückziehen', $this->rendered($status, self::report()));
|
||||
}
|
||||
@@ -495,7 +492,7 @@ final class DiviTabTest extends TestCase
|
||||
|
||||
public function testNoNoticeWhileEveryFeatureIsUsable(): void
|
||||
{
|
||||
self::assertSame('', $this->notice(ReleaseStatus::released('5.3.0')));
|
||||
self::assertSame('', $this->notice(ReleaseMatrices::released('5.3.0')));
|
||||
}
|
||||
|
||||
public function testNoNoticeForUsersWithoutManageOptions(): void
|
||||
|
||||
Reference in New Issue
Block a user