*/
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();
{
use TestsApi;
- protected $baseEndpoint = '/api/attachments';
+ protected string $baseEndpoint = '/api/attachments';
public function test_index_endpoint_returns_expected_book()
{
}
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();