Skip to content

Commit 78630c7

Browse files
committed
Revert "Remove collectPermissions, test added"
1 parent 68f9b48 commit 78630c7

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/Traits/HasPermissions.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ public function forgetWildcardPermissionIndex(): void
450450
public function syncPermissions(...$permissions)
451451
{
452452
if ($this->getModel()->exists) {
453+
$this->collectPermissions($permissions);
453454
$this->permissions()->detach();
454455
$this->setRelation('permissions', collect());
455456
}

tests/HasPermissionsTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,23 @@ public function it_can_avoid_sync_duplicated_permissions()
611611
$this->assertTrue($this->testUser->hasDirectPermission('edit-blog'));
612612
}
613613

614+
/** @test */
615+
#[Test]
616+
public function it_can_avoid_detach_on_permission_that_does_not_exist_sync()
617+
{
618+
$this->testUser->syncPermissions('edit-articles');
619+
620+
try {
621+
$this->testUser->syncPermissions('permission-does-not-exist');
622+
$this->fail('Expected PermissionDoesNotExist exception was not thrown.');
623+
} catch (PermissionDoesNotExist $e){
624+
//
625+
}
626+
627+
$this->assertTrue($this->testUser->hasDirectPermission('edit-articles'));
628+
$this->assertFalse($this->testUser->checkPermissionTo('permission-does-not-exist'));
629+
}
630+
614631
/** @test */
615632
#[Test]
616633
public function it_can_sync_multiple_permissions_by_id()

tests/HasRolesTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,23 @@ public function it_can_avoid_sync_duplicated_roles()
318318
$this->assertTrue($this->testUser->hasRole('testRole2'));
319319
}
320320

321+
/** @test */
322+
#[Test]
323+
public function it_can_avoid_detach_on_role_that_does_not_exist_sync()
324+
{
325+
$this->testUser->syncRoles('testRole');
326+
327+
try {
328+
$this->testUser->syncRoles('role-does-not-exist');
329+
$this->fail('Expected RoleDoesNotExist exception was not thrown.');
330+
} catch (RoleDoesNotExist $e){
331+
//
332+
}
333+
334+
$this->assertTrue($this->testUser->hasRole('testRole'));
335+
$this->assertFalse($this->testUser->hasRole('role-does-not-exist'));
336+
}
337+
321338
/** @test */
322339
#[Test]
323340
public function it_can_sync_multiple_roles()

0 commit comments

Comments
 (0)