createOne(); Event::assertDispatched(ExternalResourceCreated::class); } /** * When a Resource is deleted, an ExternalResourceDeleted event shall be dispatched. * * @return void */ public function testExternalResourceDeletedEventDispatched(): void { $resource = ExternalResource::factory()->createOne(); $resource->delete(); Event::assertDispatched(ExternalResourceDeleted::class); } /** * When a Resource is restored, an ExternalResourceRestored event shall be dispatched. * * @return void */ public function testExternalResourceRestoredEventDispatched(): void { $resource = ExternalResource::factory()->createOne(); $resource->restore(); Event::assertDispatched(ExternalResourceRestored::class); } /** * When a Resource is restored, an ExternalResourceUpdated 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 testExternalResourceRestoresQuietly(): void { $resource = ExternalResource::factory()->createOne(); $resource->restore(); Event::assertNotDispatched(ExternalResourceUpdated::class); } /** * When an ExternalResource is updated, an ExternalResourceUpdated event shall be dispatched. * * @return void */ public function testExternalResourceUpdatedEventDispatched(): void { $resource = ExternalResource::factory()->createOne(); $changes = ExternalResource::factory()->makeOne(); $resource->fill($changes->getAttributes()); $resource->save(); Event::assertDispatched(ExternalResourceUpdated::class); } /** * The ExternalResourceUpdated event shall contain embed fields. * * @return void */ public function testExternalResourceUpdatedEventEmbedFields(): void { $resource = ExternalResource::factory()->createOne(); $changes = ExternalResource::factory()->makeOne(); $resource->fill($changes->getAttributes()); $resource->save(); Event::assertDispatched(ExternalResourceUpdated::class, function (ExternalResourceUpdated $event) { $message = $event->getDiscordMessage(); return ! empty(Arr::get($message->embed, 'fields')); }); } }