function ViewsSaveProcessTest::testCacheRebuildMethods
Same name and namespace in other branches
- 11.x core/modules/views/tests/src/Kernel/ViewsSaveProcessTest.php \Drupal\Tests\views\Kernel\ViewsSaveProcessTest::testCacheRebuildMethods()
Tests cache rebuilding and route rebuilding are not duplicated.
The test_views_save_process contains two block, page, and serialization displays.
File
-
core/
modules/ views/ tests/ src/ Kernel/ ViewsSaveProcessTest.php, line 61
Class
- ViewsSaveProcessTest
- Tests saving views and clearing.
Namespace
Drupal\Tests\views\KernelCode
public function testCacheRebuildMethods() : void {
// Resave, this will trigger block cache clear once, but no route
// rebuilding.
$this->setCallExpectations(1, 0);
$view = Views::getView('test_views_save_process');
$view->save();
// Updating a path should trigger route rebuild.
$this->setCallExpectations(1, 1);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$path = $this->randomMachineName();
$view->displayHandlers
->get('page_1')
->overrideOption('path', $path);
$view->setDisplay('page_1');
$this->assertEquals($path, $view->getPath());
$view->save();
// Updating multiple paths should trigger route rebuild once only.
$this->setCallExpectations(1, 1);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$path = $this->randomMachineName();
$view->displayHandlers
->get('page_1')
->overrideOption('path', $path);
$view->setDisplay('page_1');
$this->assertEquals($path, $view->getPath());
$path = $this->randomMachineName();
$view->displayHandlers
->get('page_2')
->overrideOption('path', $path);
$view->setDisplay('page_2');
$this->assertEquals($path, $view->getPath());
$view->save();
// Updating serialization format should trigger route rebuild.
$this->setCallExpectations(1, 1);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$style = $view->displayHandlers
->get('rest_export_1')
->getOption('style');
$style['options']['formats'] = [
'xml' => 'xml',
];
$view->displayHandlers
->get('rest_export_1')
->overrideOption('style', $style);
$view->setDisplay('rest_export_1');
$view->save();
// Updating multiple formats should trigger route rebuild once only.
$this->setCallExpectations(1, 1);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$style = $view->displayHandlers
->get('rest_export_1')
->getOption('style');
$style['options']['formats'] = [
'xml' => 'xml',
];
$view->displayHandlers
->get('rest_export_1')
->overrideOption('style', $style);
$view->setDisplay('rest_export_1');
$style = $view->displayHandlers
->get('rest_export_2')
->getOption('style');
$style['options']['formats'] = [
'json' => 'json',
];
$view->displayHandlers
->get('rest_export_2')
->overrideOption('style', $style);
$view->setDisplay('rest_export_2');
$view->save();
// Updating multiple formats and paths should trigger route rebuild once
// only.
$this->setCallExpectations(1, 1);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$style = $view->displayHandlers
->get('rest_export_1')
->getOption('style');
$style['options']['formats'] = [
'xml' => 'xml',
];
$view->displayHandlers
->get('rest_export_1')
->overrideOption('style', $style);
$view->setDisplay('rest_export_1');
$style = $view->displayHandlers
->get('rest_export_2')
->getOption('style');
$style['options']['formats'] = [
'json' => 'json',
];
$view->displayHandlers
->get('rest_export_2')
->overrideOption('style', $style);
$view->setDisplay('rest_export_2');
$path = $this->randomMachineName();
$view->displayHandlers
->get('page_1')
->overrideOption('path', $path);
$view->setDisplay('page_1');
$path = $this->randomMachineName();
$view->displayHandlers
->get('page_2')
->overrideOption('path', $path);
$view->setDisplay('page_2');
$view->save();
// Updating the format to the existing format or path to the existing path
// Should trigger no route rebuilding.
$this->setCallExpectations(1, 0);
$view = Views::getView('test_views_save_process');
$view->initDisplay();
$style = $view->displayHandlers
->get('rest_export_1')
->getOption('style');
$style['options']['formats'] = [
'xml' => 'xml',
];
$view->displayHandlers
->get('rest_export_1')
->overrideOption('style', $style);
$view->setDisplay('rest_export_1');
$style = $view->displayHandlers
->get('rest_export_2')
->getOption('style');
$style['options']['formats'] = [
'json' => 'json',
];
$view->displayHandlers
->get('rest_export_2')
->overrideOption('style', $style);
$view->setDisplay('rest_export_2');
$view->setDisplay('page_1');
$view->displayHandlers
->get('page_1')
->overrideOption('path', $view->getPath());
$view->setDisplay('page_2');
$view->displayHandlers
->get('page_2')
->overrideOption('path', $view->getPath());
$view->save();
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.