createOne(); Event::assertDispatched(ImageCreated::class); } /** * When an Image is deleted, an ImageDeleted event shall be dispatched. * * @return void */ public function testImageDeletedEventDispatched(): void { $image = Image::factory()->createOne(); $image->delete(); Event::assertDispatched(ImageDeleted::class); } /** * When an Image is restored, an ImageRestored event shall be dispatched. * * @return void */ public function testImageRestoredEventDispatched(): void { $image = Image::factory()->createOne(); $image->restore(); Event::assertDispatched(ImageRestored::class); } /** * When an Image is restored, an ImageUpdated event shall not be dispatched. * Note: This is a customization that overrides default framework behavior. * An updated event is fired on restore. * * @return void */ public function testImageRestoresQuietly(): void { $image = Image::factory()->createOne(); $image->restore(); Event::assertNotDispatched(ImageUpdated::class); } /** * When an Image is updated, an ImageUpdated event shall be dispatched. * * @return void */ public function testImageUpdatedEventDispatched(): void { $image = Image::factory()->createOne(); $changes = Image::factory()->makeOne(); $image->fill($changes->getAttributes()); $image->save(); Event::assertDispatched(ImageUpdated::class); } /** * The ImageUpdated event shall contain embed fields. * * @return void */ public function testImageUpdatedEventEmbedFields(): void { $image = Image::factory()->createOne(); $changes = Image::factory()->makeOne(); $image->fill($changes->getAttributes()); $image->save(); Event::assertDispatched(ImageUpdated::class, function (ImageUpdated $event) { $message = $event->getDiscordMessage(); return ! empty(Arr::get($message->embed, 'fields')); }); } }