for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); Event::assertDispatched(EntryCreated::class); } /** * When an Entry is deleted, an EntryDeleted event shall be dispatched. * * @return void */ public function testEntryDeletedEventDispatched(): void { $entry = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); $entry->delete(); Event::assertDispatched(EntryDeleted::class); } /** * When an Entry is restored, an EntryRestored event shall be dispatched. * * @return void */ public function testEntryRestoredEventDispatched(): void { $entry = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); $entry->restore(); Event::assertDispatched(EntryRestored::class); } /** * When an Entry is restored, an EntryUpdated 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 testEntryRestoresQuietly(): void { $entry = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); $entry->restore(); Event::assertNotDispatched(EntryUpdated::class); } /** * When an Entry is updated, an EntryUpdated event shall be dispatched. * * @return void */ public function testEntryUpdatedEventDispatched(): void { $entry = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); $changes = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->makeOne(); $entry->fill($changes->getAttributes()); $entry->save(); Event::assertDispatched(EntryUpdated::class); } /** * The EntryUpdated event shall contain embed fields. * * @return void */ public function testEntryUpdatedEventEmbedFields(): void { $entry = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->createOne(); $changes = AnimeThemeEntry::factory() ->for(AnimeTheme::factory()->for(Anime::factory())) ->makeOne(); $entry->fill($changes->getAttributes()); $entry->save(); Event::assertDispatched(EntryUpdated::class, function (EntryUpdated $event) { $message = $event->getDiscordMessage(); return ! empty(Arr::get($message->embed, 'fields')); }); } }