You are here

public function UserRoleDeleteTest::testRoleDeleteUserRoleReferenceDelete in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/user/src/Tests/UserRoleDeleteTest.php \Drupal\user\Tests\UserRoleDeleteTest::testRoleDeleteUserRoleReferenceDelete()

Tests removal of role references on role entity delete.

See also

user_user_role_delete()

File

core/modules/user/src/Tests/UserRoleDeleteTest.php, line 37
Contains \Drupal\user\Tests\UserRoleDeleteTest.

Class

UserRoleDeleteTest
Tests the handling of user_role entity from the user module

Namespace

Drupal\user\Tests

Code

public function testRoleDeleteUserRoleReferenceDelete() {

  // Create two test roles.
  $role_storage = $this->container
    ->get('entity.manager')
    ->getStorage('user_role');
  $role_storage
    ->create(array(
    'id' => 'test_role_one',
  ))
    ->save();
  $role_storage
    ->create(array(
    'id' => 'test_role_two',
  ))
    ->save();

  // Create user and assign both test roles.
  $values = array(
    'uid' => 1,
    'name' => $this
      ->randomString(),
    'roles' => array(
      'test_role_one',
      'test_role_two',
    ),
  );
  $user = User::create($values);
  $user
    ->save();

  // Check that user has both roles.
  $this
    ->assertTrue($user
    ->hasRole('test_role_one'));
  $this
    ->assertTrue($user
    ->hasRole('test_role_two'));

  // Delete test role one.
  $test_role_one = $role_storage
    ->load('test_role_one');
  $test_role_one
    ->delete();

  // Load user again from the database.
  $user = User::load($user
    ->id());

  // Check that user does not have role one anymore, still has role two.
  $this
    ->assertFalse($user
    ->hasRole('test_role_one'));
  $this
    ->assertTrue($user
    ->hasRole('test_role_two'));

  // Create new role with same name.
  $role_storage
    ->create(array(
    'id' => 'test_role_one',
  ))
    ->save();

  // Load user again from the database.
  $user = User::load($user
    ->id());

  // Check that user does not have role one.
  $this
    ->assertFalse($user
    ->hasRole('test_role_one'));
  $this
    ->assertTrue($user
    ->hasRole('test_role_two'));
}