Issue #3188086: Add code coverage for Drupal\Core\Batch\BatchStorage
Merge request reports
Activity
1 <?php 2 3 namespace Drupal\KernelTests\Core\Batch; 4 5 use Drupal\Core\Access\CsrfTokenGenerator; 6 use Drupal\Core\Batch\BatchStorage; 7 use Drupal\Core\Database\Connection; 8 use Drupal\Core\Database\Database; 9 use Drupal\Core\Database\Schema; 10 use Drupal\Core\Database\SchemaObjectExistsException; 11 use Drupal\KernelTests\KernelTestBase; 12 use Exception; changed this line in version 3 of the diff
7 use Drupal\Core\Database\Connection; 8 use Drupal\Core\Database\Database; 9 use Drupal\Core\Database\Schema; 10 use Drupal\Core\Database\SchemaObjectExistsException; 11 use Drupal\KernelTests\KernelTestBase; 12 use Exception; 13 use Symfony\Component\HttpFoundation\Session\SessionInterface; 14 15 /** 16 * @coversDefaultClass \Drupal\Core\Batch\BatchStorage 17 * 18 * @group Batch 19 */ 20 class BatchStorageTest extends KernelTestBase { 21 22 public function testCreate() { Every method needs a docblock. See: https://www.drupal.org/docs/develop/standards/api-documentation-and-comment-standards
16 * @coversDefaultClass \Drupal\Core\Batch\BatchStorage 17 * 18 * @group Batch 19 */ 20 class BatchStorageTest extends KernelTestBase { 21 22 public function testCreate() { 23 $token = $this->randomMachineName(); 24 $connection = Database::getConnection(); 25 $session = $this->getMockSession(); 26 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 27 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce(), $token); 28 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 29 $id = rand(); 30 31 $batchStorage = new BatchStorage($connection, $session, $csrf_token); Can the variable
$batchStorage
be changed to$batch_storage
. See: https://www.drupal.org/docs/develop/standards/coding-standards#s-persistent-variableschanged this line in version 3 of the diff
24 $connection = Database::getConnection(); 25 $session = $this->getMockSession(); 26 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 27 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce(), $token); 28 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 29 $id = rand(); 30 31 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 32 $batchStorage->create(['id' => $id]); 33 34 $this->assertTrue($connection->schema()->tableExists(BatchStorage::TABLE_NAME)); 35 36 $databaseData = $connection->query("SELECT * FROM {batch}")->fetchAll(); 37 38 $this->assertCount(1, $databaseData); 39 $this->assertEquals($id, $databaseData[0]->{'bid'}); changed this line in version 3 of the diff
29 $id = rand(); 30 31 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 32 $batchStorage->create(['id' => $id]); 33 34 $this->assertTrue($connection->schema()->tableExists(BatchStorage::TABLE_NAME)); 35 36 $databaseData = $connection->query("SELECT * FROM {batch}")->fetchAll(); 37 38 $this->assertCount(1, $databaseData); 39 $this->assertEquals($id, $databaseData[0]->{'bid'}); 40 $this->assertEquals($token, $databaseData[0]->{'token'}); 41 $this->assertEquals('a:1:{s:2:"id";i:' . $id . ';}', $databaseData[0]->{'batch'}); 42 } 43 44 public function testCreateTableCantCreate() { 52 ->getMock(); 53 $connection->method('schema') 54 ->willReturn($schema); 55 $connection->expects($this->once()) 56 ->method('insert') 57 ->willThrowException(new Exception('Fake database exception')); 58 /** @var \Drupal\Core\Database\Connection $connection */ 59 60 $session = $this->getMockSession(); 61 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 62 $csrf_token = $this->getMockCsrfTokenGenerator($this->never()); 63 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 64 65 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 66 67 $this->expectException(Exception::class); changed this line in version 3 of the diff
100 } 101 102 public function testLoad() { 103 $connection = Database::getConnection(); 104 $session = $this->getMockSession(); 105 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 106 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce()); 107 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 108 109 $id = rand(); 110 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 111 $batchStorage->create(['id' => $id]); 112 $loadedBatch = $batchStorage->load($id); 113 114 $this->assertIsArray($loadedBatch, 'Loaded batch is an array'); 115 $this->assertArrayHasKey('id', $loadedBatch, 'Loaded batch has a key of "id"'); changed this line in version 3 of the diff
116 $this->assertEquals($id, $loadedBatch['id'], 'Loaded batch id matches requested id'); 117 } 118 119 public function testLoadMissingId() { 120 $connection = Database::getConnection(); 121 $session = $this->getMockSession(); 122 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 123 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce()); 124 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 125 $id = rand(); 126 127 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 128 $batchStorage->create(['id' => $id]); 129 $loadedBatch = $batchStorage->load($id + 10); 130 131 $this->assertFalse($loadedBatch); changed this line in version 3 of the diff
119 public function testLoadMissingId() { 120 $connection = Database::getConnection(); 121 $session = $this->getMockSession(); 122 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 123 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce()); 124 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 125 $id = rand(); 126 127 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 128 $batchStorage->create(['id' => $id]); 129 $loadedBatch = $batchStorage->load($id + 10); 130 131 $this->assertFalse($loadedBatch); 132 } 133 134 public function testLoadDatabaseException() { 177 $connection = Database::getConnection(); 178 $session = $this->getMockSession(); 179 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 180 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce()); 181 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 182 183 $id = rand(); 184 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 185 $batchStorage->create(['id' => $id]); 186 $batchStorage->create(['id' => $id + 10]); 187 188 $batchStorage->delete($id); 189 190 $databaseData = $connection->query("SELECT * FROM {batch}")->fetchAll(); 191 $this->assertCount(1, $databaseData); 192 $this->assertNotEquals($id, $databaseData[0]->{'bid'}); changed this line in version 3 of the diff
181 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 182 183 $id = rand(); 184 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 185 $batchStorage->create(['id' => $id]); 186 $batchStorage->create(['id' => $id + 10]); 187 188 $batchStorage->delete($id); 189 190 $databaseData = $connection->query("SELECT * FROM {batch}")->fetchAll(); 191 $this->assertCount(1, $databaseData); 192 $this->assertNotEquals($id, $databaseData[0]->{'bid'}); 193 $this->assertEquals($id + 10, $databaseData[0]->{'bid'}); 194 } 195 196 public function testDeleteDatabaseException() { 249 $session = $this->getMockSession(); 250 /** @var \Symfony\Component\HttpFoundation\Session\SessionInterface $session */ 251 $csrf_token = $this->getMockCsrfTokenGenerator($this->atLeastOnce()); 252 /** @var \Drupal\Core\Access\CsrfTokenGenerator $csrf_token */ 253 254 $batchStorage = new BatchStorage($connection, $session, $csrf_token); 255 256 $batchStorage->create(['id' => 1]); 257 $batchStorage->create(['id' => 2]); 258 259 $connection->update('batch') 260 ->fields(['timestamp' => 0]) 261 ->condition('bid', 1) 262 ->execute(); 263 264 $batchStorage->cleanup(); changed this line in version 3 of the diff
mentioned in commit issue/drupal-3188086@1f85fc62
mentioned in commit issue/drupal-3188086@c314c766
mentioned in commit issue/drupal-3188086@e485a1b0
mentioned in commit issue/drupal-3188086@ffbce17a
mentioned in commit issue/drupal-3188086@850a3920