function DatabaseStorageTest::testExceptionIsThrownIfQueryFails

Same name in other branches
  1. 10 core/tests/Drupal/KernelTests/Core/Config/Storage/DatabaseStorageTest.php \Drupal\KernelTests\Core\Config\Storage\DatabaseStorageTest::testExceptionIsThrownIfQueryFails()

Tests that operations throw exceptions if the query fails.

File

core/tests/Drupal/KernelTests/Core/Config/Storage/DatabaseStorageTest.php, line 48

Class

DatabaseStorageTest
Tests DatabaseStorage operations.

Namespace

Drupal\KernelTests\Core\Config\Storage

Code

public function testExceptionIsThrownIfQueryFails() : void {
    $connection = Database::getConnection();
    if ($connection->databaseType() === 'sqlite') {
        // See: https://www.drupal.org/project/drupal/issues/3349286
        $this->markTestSkipped('SQLite cannot allow detection of exceptions due to double quoting.');
        return;
    }
    Database::getConnection()->schema()
        ->dropTable('config');
    // In order to simulate database issue create a table with an incorrect
    // specification.
    $table_specification = [
        'fields' => [
            'id' => [
                'type' => 'int',
                'default' => NULL,
            ],
        ],
    ];
    Database::getConnection()->schema()
        ->createTable('config', $table_specification);
    try {
        $this->storage
            ->exists('config.settings');
        $this->fail('Expected exception not thrown from exists()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->read('config.settings');
        $this->fail('Expected exception not thrown from read()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->readMultiple([
            'config.settings',
            'config.settings2',
        ]);
        $this->fail('Expected exception not thrown from readMultiple()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->write('config.settings', [
            'data' => '',
        ]);
        $this->fail('Expected exception not thrown from deleteAll()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->listAll();
        $this->fail('Expected exception not thrown from listAll()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->deleteAll();
        $this->fail('Expected exception not thrown from deleteAll()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    try {
        $this->storage
            ->getAllCollectionNames();
        $this->fail('Expected exception not thrown from getAllCollectionNames()');
    } catch (DatabaseExceptionWrapper) {
        // Exception was expected
    }
    $this->assertTrue(TRUE);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.