createOne(); $entry = Entry::factory()->createOne(); $video->entries()->attach($entry); Event::assertDispatched(EntryVideoCreated::class); }); test('anime theme entry video deleted event dispatched', function (): void { $video = Video::factory()->createOne(); $entry = Entry::factory()->createOne(); $video->entries()->attach($entry); $video->entries()->detach($entry); Event::assertDispatched(EntryVideoDeleted::class); }); test('anime theme entry video created event update playlist tracks', function (): void { $video = Video::factory()->createOne(); $entry = Entry::factory()->createOne(); $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->for($video) ->createOne(); $video->entries()->attach($entry); Event::assertDispatched(EntryVideoCreated::class, function (EntryVideoCreated $event) use ($entry, $track) { $event->updatePlaylistTracks(); return $track->refresh()->animethemeentry()->is($entry); }); }); test('anime theme entry video deleted event update playlist tracks', function (): void { $video = Video::factory()->createOne(); $entry = Entry::factory()->createOne(); $secondEntry = Entry::factory()->createOne(); $video->entries()->attach($entry); $track = PlaylistTrack::factory() ->for(Playlist::factory()) ->for($video) ->for($entry) ->createOne(); $video->entries()->attach($secondEntry); $video->entries()->detach($entry); Event::assertDispatched(EntryVideoDeleted::class, function (EntryVideoDeleted $event) use ($secondEntry, $track) { $event->updatePlaylistTracks(); return $track->refresh()->animethemeentry()->is($secondEntry); }); });