class KernelTestBaseDatabaseDriverModuleTest

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/KernelTests/KernelTestBaseDatabaseDriverModuleTest.php \Drupal\KernelTests\KernelTestBaseDatabaseDriverModuleTest
  2. 10 core/tests/Drupal/KernelTests/KernelTestBaseDatabaseDriverModuleTest.php \Drupal\KernelTests\KernelTestBaseDatabaseDriverModuleTest

@coversDefaultClass \Drupal\KernelTests\KernelTestBase

@group PHPUnit @group Test @group KernelTests

Hierarchy

Expanded class hierarchy of KernelTestBaseDatabaseDriverModuleTest

File

core/tests/Drupal/KernelTests/KernelTestBaseDatabaseDriverModuleTest.php, line 14

Namespace

Drupal\KernelTests
View source
class KernelTestBaseDatabaseDriverModuleTest extends KernelTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected function getDatabaseConnectionInfo() {
    // If the test is run with argument SIMPLETEST_DB then use it.
    $db_url = getenv('SIMPLETEST_DB');
    if (empty($db_url)) {
      throw new \Exception('There is no database connection so no tests can be run. You must provide a SIMPLETEST_DB environment variable to run PHPUnit based functional tests outside of run-tests.sh. See https://www.drupal.org/node/2116263#skipped-tests for more information.');
    }
    else {
      $database = Database::convertDbUrlToConnectionInfo($db_url, $this->root);
      if (in_array($database['driver'], [
        'mysql',
        'pgsql',
      ])) {
        // Change the used database driver to the one provided by the module
        // "driver_test".
        $driver = 'Drivertest' . ucfirst($database['driver']);
        $database['driver'] = $driver;
        $database['namespace'] = 'Drupal\\driver_test\\Driver\\Database\\' . $driver;
        $database['autoload'] = "core/modules/system/tests/modules/driver_test/src/Driver/Database/{$driver}/";
      }
      Database::addConnectionInfo('default', 'default', $database);
    }
    // Clone the current connection and replace the current prefix.
    $connection_info = Database::getConnectionInfo('default');
    if (!empty($connection_info)) {
      Database::renameConnection('default', 'simpletest_original_default');
      foreach ($connection_info as $target => $value) {
        // Replace the full table prefix definition to ensure that no table
        // prefixes of the test runner leak into the test.
        $connection_info[$target]['prefix'] = [
          'default' => $this->databasePrefix,
        ];
      }
    }
    return $connection_info;
  }
  
  /**
   * @covers ::bootEnvironment
   */
  public function testDatabaseDriverModuleEnabled() : void {
    $driver = Database::getConnection()->driver();
    if (!in_array($driver, [
      'DrivertestMysql',
      'DrivertestPgsql',
    ])) {
      $this->markTestSkipped("This test does not support the {$driver} database driver.");
    }
    // Test that the module that is providing the database driver is enabled.
    $this->assertSame(1, \Drupal::service('extension.list.module')->get('driver_test')->status);
  }

}

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