fix(compat): Bereinigung liegengebliebener Prüf-Einträge löschte laufende Prüfungen
Entwürfe haben in WordPress kein gültiges GMT-Datum (0000-00-00), deshalb hielt die Orphan-Bereinigung jeden markierten Prüf-Eintrag für alt und konnte eine laufende Divi-Prüfung abbrechen. Der neue Kern-Baustein ThrowawayPost setzt beim Anlegen ein echtes GMT-Datum, prüft das Alter über post_modified_gmt und kapselt Anlegen, Prüfen und Löschen (Anlegen jetzt innerhalb von try). WriteProbe nutzt ihn; Fehlermeldungen von WordPress gehen nur noch ins Error-Log. Live in DDEV belegt: frischer Eintrag bleibt, 11 Minuten alter wird gelöscht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
239d35c198
commit
42aa4f8dc9
@@ -156,28 +156,28 @@ final class WriteProbeTest extends TestCase
|
||||
self::assertSame(['_lit_mcp_check_page' => '1'], $captured['meta_input']);
|
||||
}
|
||||
|
||||
public function testRemovesOrphanedCheckPages(): void
|
||||
public function testRemovesOrphanedCheckPagesThroughTheSharedCleanup(): void
|
||||
{
|
||||
Functions\expect('get_posts')->once()->with(Mockery::on(static fn (array $query): bool =>
|
||||
$query['meta_key'] === '_lit_mcp_check_page'
|
||||
&& $query['post_type'] === 'page'
|
||||
&& $query['post_status'] === 'draft'
|
||||
&& $query['fields'] === 'all'
|
||||
&& ($query['date_query'][0]['before'] ?? null) === '10 minutes ago'))->andReturn([
|
||||
&& ($query['date_query'][0]['column'] ?? null) === 'post_modified_gmt'))->andReturn([
|
||||
new WP_Post(['ID' => 51, 'post_title' => WriteProbe::TITLE . ' 2026-01-01 00:00']),
|
||||
new WP_Post(['ID' => 52, 'post_title' => WriteProbe::TITLE . ' 2026-01-02 00:00']),
|
||||
new WP_Post(['ID' => 60, 'post_title' => 'Ein anderer Entwurf']),
|
||||
]);
|
||||
|
||||
self::assertSame([51, 52], WriteProbe::removeOrphans());
|
||||
self::assertSame([51, 52], $this->deleted);
|
||||
self::assertSame([51], WriteProbe::removeOrphans());
|
||||
self::assertSame([51], $this->deleted);
|
||||
}
|
||||
|
||||
public function testKeepsAMarkedDraftWhoseTitleDoesNotMatch(): void
|
||||
public function testAPageThatCannotBeCreatedIsAFixedTextWithoutTheWordPressMessage(): void
|
||||
{
|
||||
Functions\when('get_posts')->justReturn([
|
||||
new WP_Post(['ID' => 60, 'post_title' => 'Ein anderer Entwurf']),
|
||||
]);
|
||||
Functions\when('wp_insert_post')->justReturn(new \WP_Error('x', 'Datenbank voll'));
|
||||
|
||||
self::assertSame([], WriteProbe::removeOrphans());
|
||||
$problems = (new WriteProbe($this->composer(), $this->renderer(''), '/nonexistent-divi'))->run();
|
||||
|
||||
self::assertSame(['Die Testseite konnte nicht angelegt werden (Details im PHP-Error-Log).'], $problems);
|
||||
self::assertSame([], $this->deleted);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user