diff core/modules/user/tests/src/Kernel/UserDeleteTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/user/tests/src/Kernel/UserDeleteTest.php	Thu May 09 15:34:47 2019 +0100
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Tests\user\Kernel;
+
+use Drupal\Core\Database\Database;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\Tests\user\Traits\UserCreationTrait;
+use Drupal\user\Entity\User;
+
+/**
+ * Tests deleting of user accounts.
+ *
+ * @group user
+ */
+class UserDeleteTest extends KernelTestBase {
+
+  use UserCreationTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'system',
+    'user',
+  ];
+
+  /**
+   * Test deleting multiple users.
+   */
+  public function testUserDeleteMultiple() {
+    $this->installSchema('system', ['sequences']);
+    $this->installSchema('user', ['users_data']);
+    $this->installEntitySchema('user');
+
+    // Create a few users with permissions, so roles will be created.
+    $user_a = $this->createUser(['access user profiles']);
+    $user_b = $this->createUser(['access user profiles']);
+    $user_c = $this->createUser(['access user profiles']);
+
+    $uids = [$user_a->id(), $user_b->id(), $user_c->id()];
+
+    // These users should have a role
+    $connection = Database::getConnection();
+    $query = $connection->select('user__roles', 'r');
+    $roles_created = $query
+      ->fields('r', ['entity_id'])
+      ->condition('entity_id', $uids, 'IN')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+
+    $this->assertGreaterThan(0, $roles_created);
+    // We should be able to load one of the users.
+    $this->assertNotNull(User::load($user_a->id()));
+    // Delete the users.
+    user_delete_multiple($uids);
+    // Test if the roles assignments are deleted.
+    $query = $connection->select('user__roles', 'r');
+    $roles_after_deletion = $query
+      ->fields('r', ['entity_id'])
+      ->condition('entity_id', $uids, 'IN')
+      ->countQuery()
+      ->execute()
+      ->fetchField();
+    $this->assertEquals(0, $roles_after_deletion);
+    // Test if the users are deleted, User::load() will return NULL.
+    $this->assertNull(User::load($user_a->id()));
+    $this->assertNull(User::load($user_b->id()));
+    $this->assertNull(User::load($user_c->id()));
+  }
+
+}