You are here

public function ConnectionTest::testPDOStatementQueryDeprecation in Drupal 9

Tests the deprecation of passing a PDOStatement object to ::query.

@group legacy

File

core/tests/Drupal/KernelTests/Core/Database/ConnectionTest.php, line 155

Class

ConnectionTest
Tests of the core database system.

Namespace

Drupal\KernelTests\Core\Database

Code

public function testPDOStatementQueryDeprecation() : void {
  $db = Database::getConnection();
  $stmt = $db
    ->prepareStatement('SELECT * FROM {test}', []);
  if (!$stmt instanceof StatementWrapper) {
    $this
      ->markTestSkipped("This test only runs for db drivers using StatementWrapper.");
  }
  if (!$stmt
    ->getClientStatement() instanceof \PDOStatement) {
    $this
      ->markTestSkipped("This test only runs for PDO-based db drivers.");
  }
  $this
    ->expectDeprecation('Passing a \\PDOStatement object as a $query argument to Drupal\\Core\\Database\\Connection::query is deprecated in drupal:9.2.0 and is removed in drupal:10.0.0. Call the execute method from the StatementInterface object directly instead. See https://www.drupal.org/node/3154439');
  $this
    ->assertNotNull($db
    ->query($stmt
    ->getClientStatement()));
}