class ChainedFastBackendFactoryTest

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendFactoryTest.php \Drupal\Tests\Core\Cache\ChainedFastBackendFactoryTest

@coversDefaultClass \Drupal\Core\Cache\ChainedFastBackendFactory
@group Cache

Hierarchy

Expanded class hierarchy of ChainedFastBackendFactoryTest

File

core/tests/Drupal/Tests/Core/Cache/ChainedFastBackendFactoryTest.php, line 18

Namespace

Drupal\Tests\Core\Cache
View source
class ChainedFastBackendFactoryTest extends UnitTestCase {
  
  /**
   * Test if the same name is provided for consistent and fast services.
   */
  public function testIdenticalService() : void {
    $container = $this->createMock(ContainerInterface::class);
    $testCacheFactory = $this->createMock(CacheFactoryInterface::class);
    $testCacheBackend = $this->createMock(CacheBackendInterface::class);
    $container->expects($this->once())
      ->method('get')
      ->with('cache.backend.test')
      ->willReturn($testCacheFactory);
    $testCacheFactory->expects($this->once())
      ->method('get')
      ->with('test_bin')
      ->willReturn($testCacheBackend);
    $cacheFactory = new ChainedFastBackendFactory(NULL, 'cache.backend.test', 'cache.backend.test');
    $cacheFactory->setContainer($container);
    $cacheBackend = $cacheFactory->get('test_bin');
    // The test backend should be returned directly.
    $this->assertSame($testCacheBackend, $cacheBackend);
  }
  
  /**
   * Test if different names are provided for consistent and fast services.
   */
  public function testDifferentServices() : void {
    $container = $this->createMock(ContainerInterface::class);
    $testConsistentCacheFactory = $this->createMock(CacheFactoryInterface::class);
    $testFastCacheFactory = $this->createMock(CacheFactoryInterface::class);
    $testConsistentCacheBackend = $this->createMock(CacheBackendInterface::class);
    $testFastCacheBackend = $this->createMock(CacheBackendInterface::class);
    $container->expects($this->exactly(2))
      ->method('get')
      ->willReturnCallback(function ($service) use ($testFastCacheFactory, $testConsistentCacheFactory) {
      return match ($service) {  'cache.backend.test_consistent' => $testConsistentCacheFactory,
        'cache.backend.test_fast' => $testFastCacheFactory,
      
      };
    });
    // The same bin should be retrieved from both backends.
    $testConsistentCacheFactory->expects($this->once())
      ->method('get')
      ->with('test_bin')
      ->willReturn($testConsistentCacheBackend);
    $testFastCacheFactory->expects($this->once())
      ->method('get')
      ->with('test_bin')
      ->willReturn($testFastCacheBackend);
    $cacheFactory = new ChainedFastBackendFactory(NULL, 'cache.backend.test_consistent', 'cache.backend.test_fast');
    $cacheFactory->setContainer($container);
    // A wrapping ChainedFastBackend should be returned.
    $cacheBackend = $cacheFactory->get('test_bin');
    $this->assertInstanceOf(ChainedFastBackend::class, $cacheBackend);
  }

}

Members

Title Sort descending Modifiers Object type Summary
ChainedFastBackendFactoryTest::testDifferentServices public function Test if different names are provided for consistent and fast services.
ChainedFastBackendFactoryTest::testIdenticalService public function Test if the same name is provided for consistent and fast services.

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