Fix MassStoreAction
continuous-integration/drone/push Build is passing Details

This commit is contained in:
philipp lang 2025-06-17 22:28:11 +02:00
parent 5a2707ccac
commit 890201817f
2 changed files with 11 additions and 4 deletions

View File

@ -54,9 +54,7 @@ class MassStoreAction
Membership::where($attributes)->active()->whereNotIn('member_id', $members)->get()
->each(fn ($membership) => MembershipDestroyAction::run($membership->id));
collect($members)
->except(Membership::where($attributes)->active()->pluck('member_id'))
->map(fn ($memberId) => Member::findOrFail($memberId))
Member::whereIn('id', $members)->whereDoesntHave('memberships', fn ($q) => $q->where($attributes))->get()
->each(fn ($member) => MembershipStoreAction::run(
$member,
$activity,
@ -65,7 +63,6 @@ class MassStoreAction
null,
));
ResyncAction::dispatch();
});
}

View File

@ -48,6 +48,16 @@ it('testItCreatesAMembership', function() {
MassStoreAction::run($group, $activity, $subactivity, [$member->id]);
});
it('doesnt create a membership that already exists', function() {
MembershipDestroyAction::partialMock()->shouldReceive('handle')->never();
MembershipStoreAction::partialMock()->shouldReceive('handle')->never();
$member = Member::factory()->defaults()
->has(Membership::factory()->in('Leiter*in', 10, 'Rover', 11)->inNami(55))
->create();
MassStoreAction::run($member->memberships->first()->group, $member->memberships->first()->activity, $member->memberships->first()->subactivity, [$member->id]);
});
it('cannot create membership when activity and subactivity doesnt belong together', function() {
$this->login()->loginNami();
$member = Member::factory()->defaults()->create();