create(); $a = Company::factory()->create(); $b = Company::factory()->create(); $user->syncCompaniesWithRoles([$a->id, $b->id], [$a->id => 'owner', $b->id => 'responsible']); expect($user->companies()->pluck('role', 'companies.id')->all()) ->toBe([$a->id => 'owner', $b->id => 'responsible']); }); test('syncCompaniesWithRoles defaults missing roles to member', function () { $user = User::factory()->create(); $company = Company::factory()->create(); $user->syncCompaniesWithRoles([$company->id], []); expect($user->companies()->first()->pivot->role)->toBe('member'); }); test('syncCompaniesWithRoles detaches companies no longer listed', function () { $user = User::factory()->create(); $a = Company::factory()->create(); $b = Company::factory()->create(); $user->syncCompaniesWithRoles([$a->id, $b->id], []); $user->syncCompaniesWithRoles([$b->id], [$b->id => 'owner']); expect($user->companies()->pluck('companies.id')->all())->toBe([$b->id]); });