writable()); self::assertFalse((new ReleaseStatus(ReleaseState::Untested, '5.3.0'))->writable()); self::assertFalse((new ReleaseStatus(ReleaseState::Incompatible, '5.3.0', null, ['x']))->writable()); } public function testUntestedRefusalNamesTheVersionAndTheWayOut(): void { $payload = self::assertToolError( (new ReleaseStatus(ReleaseState::Untested, '5.3.0'))->refusal(), 'divi_untested' ); self::assertSame( 'Achtung: Divi 5.3.0 ist auf dieser Website noch nicht für LIT MCP freigegeben. Schreibende ' . 'Divi-Werkzeuge sind 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::assertStringContainsString('lesende Divi-Werkzeuge funktionieren weiter', $payload['hint']); } public function testIncompatibleRefusalListsTheProblems(): void { $status = new ReleaseStatus(ReleaseState::Incompatible, '5.3.0', null, ['Theme Builder: Nachbau von x()']); $payload = self::assertToolError($status->refusal(), 'divi_incompatible'); self::assertSame( 'Divi 5.3.0 hat Stellen geändert, die LIT MCP nutzt. Schreibende Divi-Werkzeuge sind gesperrt, bis ' . 'LIT MCP aktualisiert wurde. Es wurde nichts geändert.', $payload['message'] ); self::assertSame(['Theme Builder: Nachbau von x()'], $payload['problems']); } public function testNoticesForReadingTools(): void { self::assertSame( 'Achtung: Divi 5.3.0 ist für LIT MCP ungetestet; Lesen funktioniert, Schreiben ist gesperrt.', (new ReleaseStatus(ReleaseState::Untested, '5.3.0'))->notice() ); self::assertSame( 'Achtung: Divi (Version unbekannt) ist für LIT MCP inkompatibel; Lesen funktioniert, Schreiben ist ' . 'gesperrt.', (new ReleaseStatus(ReleaseState::Incompatible, ''))->notice() ); } public function testAReleasedStatusHasNoRefusal(): void { $this->expectException(LogicException::class); ReleaseStatus::released('5.2.1')->refusal(); } public function testToArrayForSiteStatus(): void { $status = new ReleaseStatus( ReleaseState::Released, '5.3.0', ReleaseStatus::SOURCE_DATABASE, [], ['released_at' => '2026-10-01T08:00:00+00:00', 'user_id' => 1] ); self::assertSame( ['state' => 'released', 'version' => '5.3.0', 'source' => 'database', 'released_at' => '2026-10-01T08:00:00+00:00', 'released_by' => 1, 'problems' => []], $status->toArray() ); } }