createOne(); Event::assertDispatched(StudioCreated::class); } /** * When a Studio is deleted, a StudioDeleted event shall be dispatched. * * @return void */ public function testStudioDeletedEventDispatched(): void { $studio = Studio::factory()->createOne(); $studio->delete(); Event::assertDispatched(StudioDeleted::class); } /** * When a Studio is restored, a StudioRestored event shall be dispatched. * * @return void */ public function testStudioRestoredEventDispatched(): void { $studio = Studio::factory()->createOne(); $studio->restore(); Event::assertDispatched(StudioRestored::class); } /** * When a Studio is restored, a StudioUpdated 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 testStudioRestoresQuietly(): void { $studio = Studio::factory()->createOne(); $studio->restore(); Event::assertNotDispatched(StudioUpdated::class); } /** * When a Studio is updated, a StudioUpdated event shall be dispatched. * * @return void */ public function testStudioUpdatedEventDispatched(): void { $studio = Studio::factory()->createOne(); $changes = Studio::factory()->makeOne(); $studio->fill($changes->getAttributes()); $studio->save(); Event::assertDispatched(StudioUpdated::class); } /** * The StudioUpdated event shall contain embed fields. * * @return void */ public function testStudioUpdatedEventEmbedFields(): void { $studio = Studio::factory()->createOne(); $changes = Studio::factory()->makeOne(); $studio->fill($changes->getAttributes()); $studio->save(); Event::assertDispatched(StudioUpdated::class, function (StudioUpdated $event) { $message = $event->getDiscordMessage(); return ! empty(Arr::get($message->embed, 'fields')); }); } }