diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 135ba329f..6d397bdae 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -151,7 +151,8 @@ class RoleController extends Controller $this->checkPermission('user-roles-manage'); try { - $this->permissionsRepo->deleteRole($id, $request->get('migrate_role_id', 0)); + $migrateRoleId = intval($request->get('migrate_role_id') ?: "0"); + $this->permissionsRepo->deleteRole($id, $migrateRoleId); } catch (PermissionsException $e) { $this->showErrorNotification($e->getMessage()); diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index d4d975dbd..971479e28 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -163,6 +163,22 @@ class RolesTest extends TestCase $this->assertEquals($this->user->id, $roleA->users()->first()->id); } + public function test_delete_with_empty_migrate_option_works() + { + $role = $this->users->attachNewRole($this->user); + + $this->assertCount(1, $role->users()->get()); + + $deletePage = $this->asAdmin()->get("/settings/roles/delete/$role->id"); + $this->withHtml($deletePage)->assertElementExists('select[name=migrate_role_id]'); + $resp = $this->asAdmin()->delete("/settings/roles/delete/$role->id", [ + 'migrate_role_id' => '', + ]); + + $resp->assertRedirect('/settings/roles'); + $this->assertDatabaseMissing('roles', ['id' => $role->id]); + } + public function test_entity_permissions_are_removed_on_delete() { /** @var Role $roleA */