createOne(); $member = Artist::factory()->createOne(); $artist->members()->attach($member); Event::assertDispatched(ArtistMemberCreated::class); }); test('artist member deleted event dispatched', function (): void { $artist = Artist::factory()->createOne(); $member = Artist::factory()->createOne(); $artist->members()->attach($member); $artist->members()->detach($member); Event::assertDispatched(ArtistMemberDeleted::class); }); test('artist member updated event dispatched', function (): void { $artist = Artist::factory()->createOne(); $member = Artist::factory()->createOne(); $artistMember = ArtistMember::factory() ->for($artist, 'artist') ->for($member, 'member') ->createOne(); $changes = ArtistMember::factory() ->for($artist, 'artist') ->for($member, 'member') ->makeOne(); $artistMember->fill($changes->getAttributes()); $artistMember->save(); Event::assertDispatched(ArtistMemberUpdated::class); }); test('artist member updated event embed fields', function (): void { $artist = Artist::factory()->createOne(); $member = Artist::factory()->createOne(); $artistMember = ArtistMember::factory() ->for($artist, 'artist') ->for($member, 'member') ->createOne(); $changes = ArtistMember::factory() ->for($artist, 'artist') ->for($member, 'member') ->makeOne(); $artistMember->fill($changes->getAttributes()); $artistMember->save(); Event::assertDispatched(ArtistMemberUpdated::class, function (ArtistMemberUpdated $event): bool { $message = $event->getDiscordMessage(); return filled(Arr::get($message->embed, 'fields')); }); });