Attachment API: Fixed error when name not provided in update

Fixes #5353
This commit is contained in:
Dan Brown 2024-12-09 11:32:15 +00:00
parent 7e6f6af463
commit 55d074f1a5
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 23 additions and 4 deletions

View File

@ -116,16 +116,18 @@ class AttachmentService
*/
public function updateFile(Attachment $attachment, array $requestData): Attachment
{
$attachment->name = $requestData['name'];
$link = trim($requestData['link'] ?? '');
if (isset($requestData['name'])) {
$attachment->name = $requestData['name'];
}
$link = trim($requestData['link'] ?? '');
if (!empty($link)) {
if (!$attachment->external) {
$this->deleteFileInStorage($attachment);
$attachment->external = true;
$attachment->extension = '';
}
$attachment->path = $requestData['link'];
$attachment->path = $link;
}
$attachment->save();

View File

@ -12,7 +12,7 @@ class AttachmentsApiTest extends TestCase
{
use TestsApi;
protected $baseEndpoint = '/api/attachments';
protected string $baseEndpoint = '/api/attachments';
public function test_index_endpoint_returns_expected_book()
{
@ -302,6 +302,23 @@ class AttachmentsApiTest extends TestCase
}
public function test_update_file_attachment_to_link()
{
$this->actingAsApiAdmin();
$page = $this->entities->page();
$attachment = $this->createAttachmentForPage($page);
$resp = $this->putJson("{$this->baseEndpoint}/{$attachment->id}", [
'link' => 'https://example.com/donkey',
]);
$resp->assertStatus(200);
$this->assertDatabaseHas('attachments', [
'id' => $attachment->id,
'path' => 'https://example.com/donkey',
]);
}
public function test_update_does_not_require_name()
{
$this->actingAsApiAdmin();
$page = $this->entities->page();