function DeleteTruncateTest::testTruncateTransactionRollback
Same name in other branches
- 9 core/tests/Drupal/KernelTests/Core/Database/DeleteTruncateTest.php \Drupal\KernelTests\Core\Database\DeleteTruncateTest::testTruncateTransactionRollback()
- 8.9.x core/tests/Drupal/KernelTests/Core/Database/DeleteTruncateTest.php \Drupal\KernelTests\Core\Database\DeleteTruncateTest::testTruncateTransactionRollback()
- 11.x core/tests/Drupal/KernelTests/Core/Database/DeleteTruncateTest.php \Drupal\KernelTests\Core\Database\DeleteTruncateTest::testTruncateTransactionRollback()
Confirms that transaction rollback voids a truncate operation.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Database/ DeleteTruncateTest.php, line 110
Class
- DeleteTruncateTest
- Tests delete and truncate queries.
Namespace
Drupal\KernelTests\Core\DatabaseCode
public function testTruncateTransactionRollback() : void {
$num_records_before = $this->connection
->select('test')
->countQuery()
->execute()
->fetchField();
$this->assertGreaterThan(0, $num_records_before, 'The table is not empty.');
$transaction = $this->connection
->startTransaction('test_truncate_in_transaction');
$this->connection
->insert('test')
->fields([
'name' => 'Freddie',
'age' => 45,
'job' => 'Great singer',
])
->execute();
$num_records_after_insert = $this->connection
->select('test')
->countQuery()
->execute()
->fetchField();
$this->assertEquals($num_records_before + 1, $num_records_after_insert);
$this->connection
->truncate('test')
->execute();
// Checks that there are no records left in the table, and transaction is
// still active.
$this->assertTrue($this->connection
->inTransaction());
$num_records_after = $this->connection
->select('test')
->countQuery()
->execute()
->fetchField();
$this->assertEquals(0, $num_records_after);
// Roll back the transaction, and check that we are back to status before
// insert and truncate.
$transaction->rollBack();
$this->assertFalse($this->connection
->inTransaction());
$num_records_after = $this->connection
->select('test')
->countQuery()
->execute()
->fetchField();
$this->assertEquals($num_records_before, $num_records_after);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.