Fix rich editor image preview URLs

This commit is contained in:
2026-04-20 13:41:27 +08:00
parent 6acd0ccad0
commit 0b35e54fe1
4 changed files with 85 additions and 15 deletions

View File

@@ -0,0 +1,40 @@
<?php
use App\Models\GuidePage;
it('normalizes uploaded guide image urls for rendering', function () {
$page = new GuidePage([
'content' => <<<'HTML'
<figure data-trix-attachment='{"url":"http://localhost:8000/storage/guide-pages/example.png?signature=abc"}'>
<img src="http://localhost:8000/storage/guide-pages/example.png?signature=abc">
</figure>
HTML,
]);
expect($page->normalized_content)
->toContain('/storage/guide-pages/example.png?signature=abc')
->not->toContain('http://localhost:8000/storage/guide-pages/example.png?signature=abc');
});
it('adds a leading slash to relative guide image urls', function () {
$page = new GuidePage([
'content' => '<img src="storage/guide-pages/example.png">',
]);
expect($page->normalized_content)
->toBe('<img src="/storage/guide-pages/example.png">');
});
it('keeps external image urls unchanged', function () {
$page = new GuidePage([
'content' => '<img src="https://example.com/images/example.png">',
]);
expect($page->normalized_content)
->toBe('<img src="https://example.com/images/example.png">');
});
it('builds root relative upload urls for new attachments', function () {
expect(GuidePage::uploadedAttachmentUrl('guide-pages/example.png'))
->toBe('/storage/guide-pages/example.png');
});