3 namespace Drupal\KernelTests\Core\Cache;
5 use Drupal\Core\DependencyInjection\ContainerBuilder;
6 use Drupal\KernelTests\KernelTestBase;
7 use Drupal\Tests\Core\Cache\CacheCollectorHelper;
8 use Symfony\Component\DependencyInjection\Reference;
11 * Tests DatabaseBackend cache tag implementation.
15 class CacheCollectorTest extends KernelTestBase {
20 public function register(ContainerBuilder $container) {
21 parent::register($container);
22 // Change container to database cache backends.
24 ->register('cache_factory', 'Drupal\Core\Cache\CacheFactory')
25 ->addArgument(new Reference('settings'))
26 ->addMethodCall('setContainer', [new Reference('service_container')]);
28 // Change container to use database lock backends.
30 ->register('lock', 'Drupal\Core\Lock\DatabaseLockBackend')
31 ->addArgument(new Reference('database'));
35 * Tests setting and invalidating
37 * @dataProvider providerTestInvalidCharacters
39 public function testCacheCollector($cid, $key, $value) {
40 $collector = new CacheCollectorHelper($cid, $this->container->get('cache.default'), $this->container->get('lock'));
41 $this->assertNull($collector->get($key));
42 $collector->set($key, $value);
43 $this->assertEquals($value, $collector->get($key));
44 $collector->destruct();
45 // @todo Shouldn't this be empty after destruction?
46 $this->assertEquals($value, $collector->get($key));
50 * Data provider for ::testCacheCollector().
52 public function providerTestInvalidCharacters() {
55 ['foo', 'bar', 'baz'],
56 // Invalid characters in CID.
57 ['éøïвβ中國書۞', 'foo', 'bar'],
59 [$this->randomString(1024), 'foo', 'bar'],