function ViewsBlockTest::testCacheableMetadata
Tests that cacheable metadata is retrieved from the view and merged with block cacheable metadata.
@dataProvider providerTestCacheableMetadata
See also
\Drupal\views\Plugin\block\ViewsBlock::build()
File
-
core/
modules/ views/ tests/ src/ Unit/ Plugin/ Block/ ViewsBlockTest.php, line 180
Class
- ViewsBlockTest
- @coversDefaultClass \Drupal\views\Plugin\block\ViewsBlock @group views
Namespace
Drupal\Tests\views\Unit\Plugin\BlockCode
public function testCacheableMetadata(int $blockCacheMaxAge, int $viewCacheMaxAge, int $expectedCacheMaxAge) : void {
$blockCacheTags = [
'block-cachetag-1',
'block-cachetag-2',
];
$blockCacheContexts = [
'block-cache-context-1',
'block-cache-context-2',
];
$viewCacheTags = [
'view-cachetag-1',
'view-cachetag-2',
];
$viewCacheContexts = [
'view-cache-context-1',
'view-cache-context-2',
];
// Mock view cache metadata.
$viewCacheMetadata = $this->createMock(CacheableMetadata::class);
$viewCacheMetadata->method('getCacheTags')
->willReturn($viewCacheTags);
$viewCacheMetadata->method('getCacheContexts')
->willReturn($viewCacheContexts);
$viewCacheMetadata->method('getCacheMaxAge')
->willReturn($viewCacheMaxAge);
$this->executable->display_handler
->method('getCacheMetadata')
->willReturn($viewCacheMetadata);
// Mock block context.
$blockContext = $this->createMock(ContextInterface::class);
$blockContext->method('getCacheTags')
->willReturn($blockCacheTags);
$blockContext->method('getCacheContexts')
->willReturn($blockCacheContexts);
$blockContext->method('getCacheMaxAge')
->willReturn($blockCacheMaxAge);
// Create the views block.
$block_id = 'views_block:test_view-block_1';
$config = [];
$definition = [
'provider' => 'views',
];
$plugin = new ViewsBlock($config, $block_id, $definition, $this->executableFactory, $this->storage, $this->account);
$plugin->setContext('context_name', $blockContext);
// Assertions.
$this->assertEmpty(array_diff(Cache::mergeTags($viewCacheTags, $blockCacheTags), $plugin->getCacheTags()));
$this->assertEmpty(array_diff(Cache::mergeContexts($viewCacheContexts, $blockCacheContexts), $plugin->getCacheContexts()));
$this->assertEquals($expectedCacheMaxAge, $plugin->getCacheMaxAge());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.