createOne(); Event::assertDispatched(GroupCreated::class); } /** * When a Group is deleted, a GroupDeleted event shall be dispatched. * * @return void */ public function testGroupDeletedEventDispatched(): void { $group = Group::factory()->createOne(); $group->delete(); Event::assertDispatched(GroupDeleted::class); } /** * When a Group is restored, a GroupRestored event shall be dispatched. * * @return void */ public function testGroupRestoredEventDispatched(): void { $group = Group::factory()->createOne(); $group->restore(); Event::assertDispatched(GroupRestored::class); } /** * When a Group is restored, a GroupUpdated 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 testGroupRestoresQuietly(): void { $group = Group::factory()->createOne(); $group->restore(); Event::assertNotDispatched(GroupUpdated::class); } /** * When a Group is updated, a GroupUpdated event shall be dispatched. * * @return void */ public function testGroupUpdatedEventDispatched(): void { $group = Group::factory()->createOne(); $changes = Group::factory()->makeOne(); $group->fill($changes->getAttributes()); $group->save(); Event::assertDispatched(GroupUpdated::class); } /** * The GroupUpdated event shall contain embed fields. * * @return void */ public function testGroupUpdatedEventEmbedFields(): void { $group = Group::factory()->createOne(); $changes = Group::factory()->makeOne(); $group->fill($changes->getAttributes()); $group->save(); Event::assertDispatched(GroupUpdated::class, function (GroupUpdated $event) { $message = $event->getDiscordMessage(); return ! empty(Arr::get($message->embed, 'fields')); }); } }