Skip to content
Snippets Groups Projects

Issue #3188086: Add code coverage for Drupal\Core\Batch\BatchStorage

Issue #3188086: Add code coverage for Drupal\Core\Batch\BatchStorage

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
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;
  • daffie
    daffie @daffie started a thread on 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() {
  • 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);
  • 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'});
  • daffie
    daffie @daffie started a thread on 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);
  • 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"');
  • 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);
  • daffie
    daffie @daffie started a thread on 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() {
    • The method name implies that we are testing with a DatabaseException being thrown. Only I do not see any DatabaseException being thrown in the code.

    • Please register or sign in to reply
  • 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'});
  • daffie
    daffie @daffie started a thread on 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();
  • daffie
    daffie @daffie started a thread on the diff
  • 164 165
    165 166 /**
    166 167 * Tests setQueue().
    167 *
    168 * @covers ::setQueue
  • Mark Dorison added 5 commits

    added 5 commits

    • ffbce17a - Removed Exception use statement.
    • 1f85fc62 - Renamed $batchStorage -> $batch_storage.
    • 850a3920 - Removed curly brackets/quotes from bid property usage.
    • c314c766 - Removed uneeded assertions.
    • e485a1b0 - Consolidated assertion lines.

    Compare with previous version

  • Mark Dorison added 1 commit

    added 1 commit

    • ddcd2152 - Added missing \ to Exception call.

    Compare with previous version

  • Please register or sign in to reply
    Loading