function EndOfTransactionQueriesTest::testEntitySaveRollback
Same name in other branches
- 8.9.x core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php \Drupal\KernelTests\Core\Cache\EndOfTransactionQueriesTest::testEntitySaveRollback()
- 10 core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php \Drupal\KernelTests\Core\Cache\EndOfTransactionQueriesTest::testEntitySaveRollback()
- 11.x core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php \Drupal\KernelTests\Core\Cache\EndOfTransactionQueriesTest::testEntitySaveRollback()
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Cache/ EndOfTransactionQueriesTest.php, line 108
Class
- EndOfTransactionQueriesTest
- Tests that cache tag invalidation queries are delayed to the end of transactions.
Namespace
Drupal\KernelTests\Core\CacheCode
public function testEntitySaveRollback() {
\Drupal::cache()->set('test_cache_pretransaction_entity_test_list', 'something', Cache::PERMANENT, [
'entity_test_list',
]);
\Drupal::cache()->set('test_cache_pretransaction_user_list', 'something', Cache::PERMANENT, [
'user_list',
]);
\Drupal::state()->set('delay_cache_tags_invalidation_exception', TRUE);
try {
EntityTest::create([
'name' => $this->randomString(),
])
->save();
$this->fail('Exception not thrown');
} catch (\Exception $e) {
$this->assertEquals('Abort entity save to trigger transaction rollback.', $e->getMessage());
}
// The cache has not been invalidated.
$this->assertNotEmpty(\Drupal::cache()->get('test_cache_pretransaction_entity_test_list'));
$this->assertNotEmpty(\Drupal::cache()->get('test_cache_pretransaction_user_list'));
// Save a user, that should invalidate the cache tagged with user_list but
// not the one with entity_test_list.
User::create([
'name' => 'johndoe',
'status' => 1,
])->save();
$this->assertNotEmpty(\Drupal::cache()->get('test_cache_pretransaction_entity_test_list'));
$this->assertFalse(\Drupal::cache()->get('test_cache_pretransaction_user_list'));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.