Skip to content

Commit 9283cf6

Browse files
authored
Use firstOrNew() on asset save when asset has no model (#457)
* go back to firstOrNew() on assets * Add test coverage
1 parent b446044 commit 9283cf6

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/Assets/Asset.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public static function makeModelFromContract(AssetContract $source, $meta = [])
145145
}
146146

147147
if (! $model) {
148-
$model = app('statamic.eloquent.assets.model')::make([
148+
$model = app('statamic.eloquent.assets.model')::firstOrNew([
149149
'container' => $source->containerHandle(),
150150
'folder' => $source->folder(),
151151
'basename' => $source->basename(),

tests/Assets/AssetTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,24 @@ public function uploads_a_file()
206206
Event::assertDispatched(AssetUploaded::class, fn ($event) => $event->asset === $asset);
207207
Event::assertDispatched(AssetCreated::class, fn ($event) => $event->asset === $asset);
208208
}
209+
210+
#[Test]
211+
public function can_save_an_asset_made_on_the_container()
212+
{
213+
Event::fake();
214+
215+
$this->assertCount(6, AssetModel::all());
216+
217+
$asset = $this->container->makeAsset('a.jpg');
218+
219+
$this->assertNull($asset->model());
220+
221+
$asset->save();
222+
223+
$this->assertNotNull($asset->model());
224+
225+
Event::assertDispatched(AssetSaved::class, fn ($event) => $event->asset === $asset);
226+
227+
$this->assertCount(6, AssetModel::all());
228+
}
209229
}

0 commit comments

Comments
 (0)