fix: global library edits check private and scheduled pages, name the backup on failure (P8a, P14)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 01:25:16 +02:00
co-authored by Claude Opus 5.5
parent d66ad36c2e
commit 520a639411
7 changed files with 332 additions and 45 deletions
+25
View File
@@ -96,4 +96,29 @@ final class WriteFailedTest extends TestCase
self::assertSame([7, 811], [$partial->postId, $partial->revisionId]);
self::assertArrayNotHasKey('post_id', $clean->toError()->get_error_data());
}
/** Ruling P14: details (and hint/state) added after the fact, everything else kept. */
public function testWithDetailsAddsDetailsAndKeepsTheRest(): void
{
$cause = new RuntimeException('hook');
$failure = WriteFailed::rolledBack('x', $cause, 'intern', details: ['a' => 1], postId: 5, revisionId: 811);
$extended = $failure->withDetails(['backup_id' => 9], 'Sicherung 9 liegt im Papierkorb.', 'Bleibt.');
self::assertNotSame($failure, $extended);
self::assertTrue($extended->rolledBack);
self::assertSame($cause, $extended->getPrevious());
self::assertSame($failure->getMessage(), $extended->getMessage());
self::assertSame([5, 811], [$extended->postId, $extended->revisionId]);
$data = $extended->toError()->get_error_data();
self::assertSame(1, $data['a']);
self::assertSame(9, $data['backup_id']);
self::assertSame('Sicherung 9 liegt im Papierkorb.', $data['hint']);
self::assertStringContainsString('Bleibt.', $extended->toError()->get_error_message());
$partial = WriteFailed::partial('x', postId: 5)->withDetails(['backup_id' => 9]);
self::assertFalse($partial->rolledBack);
self::assertSame(9, $partial->toError()->get_error_data()['backup_id']);
self::assertSame(5, $partial->toError()->get_error_data()['post_id']);
}
}